~ubuntu-branches/ubuntu/lucid/grub2/lucid

« back to all changes in this revision

Viewing changes to kern/elf.c

  • Committer: Bazaar Package Importer
  • Author(s): Mario Limonciello
  • Date: 2009-07-30 12:41:19 UTC
  • mfrom: (1.2.4 upstream)
  • mto: (1.10.1 upstream) (17.5.1 sid)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: james.westby@ubuntu.com-20090730124119-o91k1dauj5uamikp
Tags: upstream-1.96+20090725
ImportĀ upstreamĀ versionĀ 1.96+20090725

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
{
62
62
  grub_elf_t elf;
63
63
 
64
 
  elf = grub_malloc (sizeof (*elf));
 
64
  elf = grub_zalloc (sizeof (*elf));
65
65
  if (! elf)
66
66
    return 0;
67
67
 
68
68
  elf->file = file;
69
 
  elf->phdrs = 0;
70
69
 
71
70
  if (grub_file_seek (elf->file, 0) == (grub_off_t) -1)
72
71
    goto fail;
228
227
  {
229
228
    grub_elf32_load_hook_t load_hook = (grub_elf32_load_hook_t) hook;
230
229
    grub_addr_t load_addr;
231
 
 
232
 
    if (phdr->p_type != PT_LOAD)
233
 
      return 0;
 
230
    int do_load = 1;
234
231
 
235
232
    load_addr = phdr->p_paddr;
236
 
    if (load_hook && load_hook (phdr, &load_addr))
 
233
    if (load_hook && load_hook (phdr, &load_addr, &do_load))
237
234
      return 1;
238
235
 
 
236
    if (! do_load)
 
237
      return 0;
 
238
 
239
239
    if (load_addr < load_base)
240
240
      load_base = load_addr;
241
241
 
407
407
  {
408
408
    grub_elf64_load_hook_t load_hook = (grub_elf64_load_hook_t) hook;
409
409
    grub_addr_t load_addr;
410
 
 
411
 
    if (phdr->p_type != PT_LOAD)
412
 
      return 0;
 
410
    int do_load = 1;
413
411
 
414
412
    load_addr = phdr->p_paddr;
415
 
    if (load_hook && load_hook (phdr, &load_addr))
 
413
    if (load_hook && load_hook (phdr, &load_addr, &do_load))
416
414
      return 1;
417
415
 
 
416
    if (! do_load)
 
417
      return 0;
 
418
 
418
419
    if (load_addr < load_base)
419
420
      load_base = load_addr;
420
421