On Tue, 2008-04-15 at 15:15 +0200, Robert Millan wrote: > > partmap/apple.c starts reading with the second sector (unsigned pos = > > GRUB_DISK_SECTOR_SIZE). Perhaps it should read the first sector to > > check the magic. > > Are you sure checking for the code part would be a good idea? One could be > using i8088 bootstrap code in an Apple first sector, or vice-versa.
Apple partition table requires the magic in the first two bytes of the first sector, followed by the sector size. Even if those instructions are survivable by x86 processors, executing data is a very bad hack. > Btw, how does Linux handle this? Maybe this issue has been beaten to death > already. fs/partitions/mac.c checks the magic in the first sector in mac_partition() fs/partitions/msdos.c doesn't check for the Apple magic, but it makes some other sanity checks. It rejects the partition table if any boot flags is not 0x00 or 0x80. It also refuses to accept the table if there is an EFI GPT partition. To fix the issue at hand (PC partition mistaken as Apple), all we need is to check the Apple magic in the Apple partition code. -- Regards, Pavel Roskin _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel