On invalid BSD partitions partmap/pc.c stops with reading the partitons,
so grub doestn't know anything about the ones behind it.
Attached patch fixes this and displays also the partition number not
only the invalid magic it encounters

2008-07-31  Felix Zielcke  <[EMAIL PROTECTED]>

        * partmap/pc.c (pc_partition_map_iterate): Skip over invalid BSD 
partitions
        or if there's no space for the disk label and print the partition 
number on a 
        invalid magic
Index: partmap/pc.c
===================================================================
--- partmap/pc.c	(Revision 1753)
+++ partmap/pc.c	(Arbeitskopie)
@@ -160,9 +160,11 @@
 		{
 		  /* Check if the BSD label is within the DOS partition.  */
 		  if (p.len <= GRUB_PC_PARTITION_BSD_LABEL_SECTOR)
-		    return grub_error (GRUB_ERR_BAD_PART_TABLE,
-				       "no space for disk label");
-
+		    {
+		      grub_error (GRUB_ERR_BAD_PART_TABLE,
+				  "no space for disk label");
+		      continue;
+		    }
 		  /* Read the BSD label.  */
 		  if (grub_disk_read (&raw,
 				      (p.start
@@ -175,10 +177,12 @@
 		  /* Check if it is valid.  */
 		  if (label.magic
 		      != grub_cpu_to_le32 (GRUB_PC_PARTITION_BSD_LABEL_MAGIC))
-		    return grub_error (GRUB_ERR_BAD_PART_TABLE,
-				       "invalid disk label magic 0x%x",
-				       label.magic);
-
+		    {
+		      grub_error (GRUB_ERR_BAD_PART_TABLE,
+				  "invalid disk label magic 0x%x on partition %d",
+				  label.magic,p.index);
+		      continue;
+		    }
 		  for (pcdata.bsd_part = 0;
 		       pcdata.bsd_part < grub_cpu_to_le16 (label.num_partitions);
 		       pcdata.bsd_part++)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to