From 67459bc69db4af76ba0f8a32ee3ebd99df25275f Mon Sep 17 00:00:00 2001 From: phcoder Date: Fri, 31 Jul 2009 16:04:27 +0000 Subject: [PATCH] 2009-07-31 Vladimir Serbinenko * partmap/pc.c (pc_partition_map_iterate): Check that boot flags are valid. --- ChangeLog | 5 +++++ partmap/pc.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0ca68bac1..e55382872 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-07-31 Vladimir Serbinenko + + * partmap/pc.c (pc_partition_map_iterate): Check that boot flags are + valid. + 2009-07-31 Bean * fs/xfs.c (grub_xfs_sblock): Change unused5 field to log2_sect and diff --git a/partmap/pc.c b/partmap/pc.c index 6f68ecf93..6a2efd21e 100644 --- a/partmap/pc.c +++ b/partmap/pc.c @@ -121,6 +121,10 @@ pc_partition_map_iterate (grub_disk_t disk, if (mbr.signature != grub_cpu_to_le16 (GRUB_PC_PARTITION_SIGNATURE)) return grub_error (GRUB_ERR_BAD_PART_TABLE, "no signature"); + for (i = 0; i < 4; i++) + if (mbr.entries[i].flag & 0x7f) + return grub_error (GRUB_ERR_BAD_PART_TABLE, "bad boot flag"); + /* Analyze DOS partitions. */ for (p.index = 0; p.index < 4; p.index++) {