Hi all,

testing grub2 on a 64bit platform i found an issue in kern/elf.c method
grub_elf64_load.

There are parentheses missing after the compare of read bytes and expected
filesize causing the load to always fail with GRUB_ERR_BAD_OS.

Here is the cvs patch that fixed the issue for me:

Index: kern/elf.c
===================================================================
RCS file: /cvsroot/grub/grub2/kern/elf.c,v
retrieving revision 1.5
diff -u -r1.5 elf.c
--- kern/elf.c  20 Feb 2007 22:46:12 -0000      1.5
+++ kern/elf.c  18 Apr 2007 09:02:44 -0000
@@ -432,12 +432,14 @@
       grub_ssize_t read;
       read = grub_file_read (elf->file, (void *) load_addr,
phdr->p_filesz);
       if (read != (grub_ssize_t) phdr->p_filesz)
-         /* XXX How can we free memory from `load_hook'?  */
-         grub_error_push ();
-         return grub_error (GRUB_ERR_BAD_OS,
-                            "Couldn't read segment from file: "
-                            "wanted 0x%lx bytes; read 0x%lx bytes.",
-                            phdr->p_filesz, read);
+          {
+           /* XXX How can we free memory from `load_hook'?  */
+           grub_error_push ();
+           return grub_error (GRUB_ERR_BAD_OS,
+                            "Couldn't read segment from file: "
+                            "wanted 0x%lx bytes; read 0x%lx bytes.",
+                            phdr->p_filesz, read);
+          }
      }

    if (phdr->p_filesz < phdr->p_memsz)


Best Regards, Pattrick
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to