diff --git a/ChangeLog b/ChangeLog index bf33db2df..68da09553 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-11 Robert Millan + + * loader/i386/multiboot_elfxx.c + (CONCAT(grub_multiboot_load_elf, XX)): Do not reject ET_DYN files. + 2009-03-11 Felix Zielcke * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Add `kern/list.c' and diff --git a/loader/i386/multiboot_elfxx.c b/loader/i386/multiboot_elfxx.c index 97356c49f..801800c55 100644 --- a/loader/i386/multiboot_elfxx.c +++ b/loader/i386/multiboot_elfxx.c @@ -63,10 +63,10 @@ CONCAT(grub_multiboot_load_elf, XX) (grub_file_t file, void *buffer) || ehdr->e_ident[EI_DATA] != ELFDATA2LSB || ehdr->e_machine != E_MACHINE) return grub_error(GRUB_ERR_UNKNOWN_OS, "no valid ELF header found"); - - if (ehdr->e_type != ET_EXEC) + + if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN) return grub_error (GRUB_ERR_UNKNOWN_OS, "invalid ELF file type"); - + /* FIXME: Should we support program headers at strange locations? */ if (ehdr->e_phoff + ehdr->e_phnum * ehdr->e_phentsize > MULTIBOOT_SEARCH) return grub_error (GRUB_ERR_BAD_OS, "program header at a too high offset");