]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/partmap/amiga.c (GRUB_AMIGA_PART_MAGIC): New define.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 31 Dec 2010 14:00:45 +0000 (15:00 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 31 Dec 2010 14:00:45 +0000 (15:00 +0100)
(amiga_partition_map_iterate): Check "PART" magic to avoid a very long
loop in case of incorrect amiga partmap.

ChangeLog
grub-core/partmap/amiga.c

index c9339e164e58f4a67d1ed0d9ac73e4e48edbe040..505c1cc0d6c6734f5f5f90b61346be4165ca2ff3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-31  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/partmap/amiga.c (GRUB_AMIGA_PART_MAGIC): New define.
+       (amiga_partition_map_iterate): Check "PART" magic to avoid a very long
+       loop in case of incorrect amiga partmap.
+
 2010-12-31  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/partmap/amiga.c (GRUB_AMIGA_RDSK_MAGIC): New define.
index a3ea3499c3c943406641dfd77d872318086f20c2..1e0f23402872a0b85d1268bf0e0ad51ed0eb165a 100644 (file)
@@ -44,6 +44,7 @@ struct grub_amiga_partition
 {
   /* "PART".  */
   grub_uint8_t magic[4];
+#define GRUB_AMIGA_PART_MAGIC "PART"
   grub_int32_t size;
   grub_int32_t checksum;
   grub_uint32_t scsihost;
@@ -110,6 +111,9 @@ amiga_partition_map_iterate (grub_disk_t disk,
       if (grub_disk_read (disk, next, 0, sizeof (apart), &apart))
        return grub_errno;
 
+      if (grub_memcmp (apart.magic, GRUB_AMIGA_PART_MAGIC,
+                      sizeof (apart.magic)) == 0)
+
       /* Calculate the first block and the size of the partition.  */
       part.start = (grub_be_to_cpu32 (apart.lowcyl)
                    * grub_be_to_cpu32 (apart.heads)