* loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check
64-bit address as signed on MIPS.
This commit is contained in:
parent
c7c75cf4cb
commit
c837af3f38
2 changed files with 10 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2010-05-31 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check
|
||||||
|
64-bit address as signed on MIPS.
|
||||||
|
|
||||||
2010-05-28 Colin Watson <cjwatson@ubuntu.com>
|
2010-05-28 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
* configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not
|
* configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not
|
||||||
|
|
|
@ -74,7 +74,11 @@ CONCAT(grub_multiboot_load_elf, XX) (grub_file_t file, void *buffer)
|
||||||
if (ehdr->e_phoff + ehdr->e_phnum * ehdr->e_phentsize > MULTIBOOT_SEARCH)
|
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");
|
return grub_error (GRUB_ERR_BAD_OS, "program header at a too high offset");
|
||||||
|
|
||||||
#ifdef MULTIBOOT_LOAD_ELF64
|
#if defined (MULTIBOOT_LOAD_ELF64) && defined (__mips)
|
||||||
|
/* We still in 32-bit mode. */
|
||||||
|
if (ehdr->e_entry < 0xffffffff80000000ULL)
|
||||||
|
return grub_error (GRUB_ERR_BAD_OS, "invalid entry point for ELF64");
|
||||||
|
#else
|
||||||
/* We still in 32-bit mode. */
|
/* We still in 32-bit mode. */
|
||||||
if (ehdr->e_entry > 0xffffffff)
|
if (ehdr->e_entry > 0xffffffff)
|
||||||
return grub_error (GRUB_ERR_BAD_OS, "invalid entry point for ELF64");
|
return grub_error (GRUB_ERR_BAD_OS, "invalid entry point for ELF64");
|
||||||
|
|
Loading…
Reference in a new issue