ieee1275: prevent buffer over-read
authorEric Snowberg <eric.snowberg@oracle.com>
Mon, 15 Feb 2016 18:53:45 +0000 (10:53 -0800)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Mon, 22 Feb 2016 07:01:31 +0000 (10:01 +0300)
commitbc220962e366b1b46769ed6f9fa5be603ba58ab5
tree15cd65c7318d88d7cf06664c67a6da4d6ce9348f
parent625934ec0f208836c6f2dbe7bd8ad658cbdd8537
ieee1275: prevent buffer over-read

Prevent buffer over-read in grub_machine_mmap_iterate. This was
causing phys_base from being calculated properly. This then
caused the wrong value to be placed in ramdisk_image within
struct linux_hdrs. Which prevented the ramdisk from loading on
boot.

Newer SPARC systems contain more than 8 available memory entries.

For example on a T5-8 with 2TB of memory, the memory layout could
look like this:

T5-8 Memory
reg                      00000000 30000000 0000003f b0000000
                         00000800 00000000 00000040 00000000
                         00001000 00000000 00000040 00000000
                         00001800 00000000 00000040 00000000
                         00002000 00000000 00000040 00000000
                         00002800 00000000 00000040 00000000
                         00003000 00000000 00000040 00000000
                         00003800 00000000 00000040 00000000
available                00003800 00000000 0000003f ffcae000
                         00003000 00000000 00000040 00000000
                         00002800 00000000 00000040 00000000
                         00002000 00000000 00000040 00000000
                         00001800 00000000 00000040 00000000
                         00001000 00000000 00000040 00000000
                         00000800 00000000 00000040 00000000
                         00000000 70000000 0000003f 70000000
                         00000000 6eef8000 00000000 00002000
                         00000000 30400000 00000000 3eaf6000
name                     memory

Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
grub-core/kern/ieee1275/mmap.c