chiark / gitweb /
volume_id: fat - move check for msdos signature (0x55 0xaa)
authorKarel Zak <kzak@redhat.com>
Thu, 13 Nov 2008 16:32:14 +0000 (17:32 +0100)
committerKay Sievers <kay.sievers@vrfy.org>
Thu, 13 Nov 2008 16:32:14 +0000 (17:32 +0100)
Make the msdos signature (0x55 0xaa) at 510 and 511 optional when
the standard FAT magic string is present.

extras/volume_id/lib/fat.c

index 95735c2d2d4f87e31843751d5d0667024caf4673..e30318cf0967477e5931c58efd7dee6252fce42c 100644 (file)
@@ -281,10 +281,6 @@ int volume_id_probe_vfat(struct volume_id *id, uint64_t off, uint64_t size)
        if (buf == NULL)
                return -1;
 
-       /* check signature */
-       if (buf[510] != 0x55 || buf[511] != 0xaa)
-               return -1;
-
        vs = (struct vfat_super_block *) buf;
        if (memcmp(vs->sysid, "NTFS", 4) == 0)
                return -1;
@@ -305,6 +301,10 @@ int volume_id_probe_vfat(struct volume_id *id, uint64_t off, uint64_t size)
        if (memcmp(vs->type.fat.magic, "FAT12   ", 8) == 0)
                goto magic;
 
+       /* check signature */
+       if (buf[510] != 0x55 || buf[511] != 0xaa)
+               return -1;
+
        /* some old floppies don't have a magic, expect the boot jump address to match */
        if ((vs->boot_jump[0] != 0xeb || vs->boot_jump[2] != 0x90) &&
             vs->boot_jump[0] != 0xe9)