From 917dd370404a540884a8216a1c3c94a4504867f9 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Wed, 20 Jan 2010 02:11:07 +0000 Subject: [PATCH] 2010-01-20 Dan Merillat * kern/device.c (grub_device_iterate): Allocate new part_ent structure based on sizeof (*p) rather than sizeof (p->next), to account for structure padding. * util/grub-probe.c (probe_raid_level): Return -1 immediately if disk is NULL, which might happen for LVM physical volumes with no LVM signature. --- ChangeLog | 10 ++++++++++ kern/device.c | 2 +- util/grub-probe.c | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3b31a527f..08c2851d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-01-20 Dan Merillat + + * kern/device.c (grub_device_iterate): Allocate new part_ent + structure based on sizeof (*p) rather than sizeof (p->next), to + account for structure padding. + + * util/grub-probe.c (probe_raid_level): Return -1 immediately if + disk is NULL, which might happen for LVM physical volumes with no + LVM signature. + 2009-12-20 Robert Millan * loader/mips/linux.c (grub_cmd_initrd) diff --git a/kern/device.c b/kern/device.c index f519c63b2..7d3577051 100644 --- a/kern/device.c +++ b/kern/device.c @@ -138,7 +138,7 @@ grub_device_iterate (int (*hook) (const char *name)) if (! partition_name) return 1; - p = grub_malloc (sizeof (p->next) + grub_strlen (disk->name) + 1 + + p = grub_malloc (sizeof (*p) + grub_strlen (disk->name) + 1 + grub_strlen (partition_name) + 1); if (!p) { diff --git a/util/grub-probe.c b/util/grub-probe.c index 879098542..ba2fe4c35 100644 --- a/util/grub-probe.c +++ b/util/grub-probe.c @@ -94,6 +94,11 @@ probe_partmap (grub_disk_t disk) static int probe_raid_level (grub_disk_t disk) { + /* disk might be NULL in the case of a LVM physical volume with no LVM + signature. Ignore such cases here. */ + if (!disk) + return -1; + if (disk->dev->id != GRUB_DISK_DEVICE_RAID_ID) return -1; -- 2.47.2