]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2006-06-09 Yoshinori K. Okuji <okuji@enbug.org>
authorokuji <okuji@localhost>
Thu, 8 Jun 2006 22:30:25 +0000 (22:30 +0000)
committerokuji <okuji@localhost>
Thu, 8 Jun 2006 22:30:25 +0000 (22:30 +0000)
        * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Make sure that
        ADDR_MAX does not exceed GRUB_LINUX_INITRD_MAX_ADDRESS.

ChangeLog
loader/i386/pc/linux.c

index da5a10f88f86fb0ebe176341647363225b56b888..2478f6e538912d169ebc39f8cecc296a208596f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-09  Yoshinori K. Okuji  <okuji@enbug.org>
+
+       * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Make sure that
+       ADDR_MAX does not exceed GRUB_LINUX_INITRD_MAX_ADDRESS.
+
 2006-06-07  Jeroen Dekkers  <jeroen@dekkers.cx>
 
        * include/grub/types.h (grub_host_addr_t): Rename to
index c4049d40bd38b3c277e2bdda5e61185d00deefd3..e9f4f4c2f7de45daf6df1730f6defe70e9600ba4 100644 (file)
@@ -322,7 +322,15 @@ grub_rescue_cmd_initrd (int argc, char *argv[])
 
   /* Get the highest address available for the initrd.  */
   if (grub_le_to_cpu16 (lh->version) >= 0x0203)
-    addr_max = grub_cpu_to_le32 (lh->initrd_addr_max);
+    {
+      addr_max = grub_cpu_to_le32 (lh->initrd_addr_max);
+
+      /* XXX in reality, Linux specifies a bogus value, so
+        it is necessary to make sure that ADDR_MAX does not exceed
+        0x3fffffff.  */
+      if (addr_max > GRUB_LINUX_INITRD_MAX_ADDRESS)
+       addr_max = GRUB_LINUX_INITRD_MAX_ADDRESS;
+    }
   else
     addr_max = GRUB_LINUX_INITRD_MAX_ADDRESS;