From 0d33055625146eb9e14619febb7ceb49a763b55b Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Tue, 27 Nov 2007 16:21:18 +0000 Subject: [PATCH] * Tue Nov 27 2007 Eric Sandeen 1.40.2-12 - Use upstream patch for blkid fat detection, avoids div-by-zero when encountering some BSD partitions (#398281) --- ...kid-FAT-magic-not-on-strict-position.patch | 72 ++++++------------- e2fsprogs.spec | 6 +- 2 files changed, 25 insertions(+), 53 deletions(-) diff --git a/e2fsprogs-1.40.2-blkid-FAT-magic-not-on-strict-position.patch b/e2fsprogs-1.40.2-blkid-FAT-magic-not-on-strict-position.patch index 63ebf68..da1bb3d 100644 --- a/e2fsprogs-1.40.2-blkid-FAT-magic-not-on-strict-position.patch +++ b/e2fsprogs-1.40.2-blkid-FAT-magic-not-on-strict-position.patch @@ -1,67 +1,35 @@ -From 3a493033ce3867a2561d60c1016dd0c03999e5eb Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Tue, 18 Sep 2007 15:29:59 +0200 -Subject: [PATCH] libblkid: FAT magic is not on strict position when there is a real MBR +From: Theodore Ts'o +Date: Sun, 23 Sep 2007 13:50:11 +0000 (-0400) +Subject: libblkid: Add more magic numbers that might mean there is a FAT filesystem +X-Git-Url: http://git.kernel.org/?p=fs%2Fext2%2Fe2fsprogs.git;a=commitdiff_plain;h=846be6db813895c354cc54beaa8fa6aba8d98085 -There is _optional_ reserved space before FAT: +libblkid: Add more magic numbers that might mean there is a FAT filesystem - boot | reserved | FAT | FAT | root | data - sector | space | 1 | 2 | dir | region - -for more details see: - http://en.wikipedia.org/wiki/File_Allocation_Table - -The probe_fat() code already expects reserved space and other optional -junk in MBR+FAT, but the blkid_magic array expects strictly defined -positions of FAT magic strings. That's correct for 99% partitions, but -not for situation when on the same partition is real MBR. We need to check -for FAT filesystem also when we detect MBR signature (0x55AA on address 510). - -The blkid is not able to detect vfat on USB Disks where is only one -bootable partition with vfat, for example: - - # file -s /dev/sdc1 - /dev/sdc1: x86 boot sector; GRand Unified Bootloader, stage1 version - 0x3, 1st sector stage2 0x44ae, code offset 0x48, sectors/cluster 8, - Media descriptor 0xf8, heads 4, sectors 3901408 (volumes > 32 MB) , - physical drive 0xdb, physical drive 0x5b, reserved 0xe, dos < 4.0 - BootSector (0x0) - - # vol_id /dev/sdc1 - ID_FS_USAGE=filesystem - ID_FS_TYPE=vfat - ID_FS_VERSION=FAT32 - ID_FS_UUID=0044-AE80 - ID_FS_UUID_ENC=0044-AE80 - ID_FS_LABEL=Mdv_Flash - ID_FS_LABEL_ENC=Mdv_Flash - ID_FS_LABEL_SAFE=Mdv_Flash - -old version: - # blkid /dev/sdc1 - -fixed version: - # blkid /dev/sdc1 - /dev/sdc1: LABEL="MDV_FLASH" UUID="0044-AE80" TYPE="vfat" +The FAT filesystem doesn't have its superblock with a set of magic +strings in a fixed location. Therefore, we must also check for the +FAT filesystem if it looks like we have an MBR at the beginning of the +partition. We previously checked if the first byte was a jump +instruction but that missed some USB disks with only one bootable +partition. Now we check for the MBR signature (0x55AA at offset 510) +as well as any partition where byte 0 is \351 or \353. Signed-off-by: Karel Zak +Signed-off-by: "Theodore Ts'o" --- - lib/blkid/probe.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c -index d56292e..42ec234 100644 +index 69a43b0..5c20127 100644 --- a/lib/blkid/probe.c +++ b/lib/blkid/probe.c -@@ -849,6 +849,7 @@ static struct blkid_magic type_array[] = { +@@ -846,8 +846,9 @@ static struct blkid_magic type_array[] = { + { "vfat", 0, 0x36, 5, "MSDOS", probe_fat }, + { "vfat", 0, 0x36, 8, "FAT16 ", probe_fat }, { "vfat", 0, 0x36, 8, "FAT12 ", probe_fat }, - { "vfat", 0, 0, 2, "\353\220", probe_fat_nomagic }, +- { "vfat", 0, 0, 2, "\353\220", probe_fat_nomagic }, ++ { "vfat", 0, 0, 1, "\353", probe_fat_nomagic }, { "vfat", 0, 0, 1, "\351", probe_fat_nomagic }, -+ { "vfat", 0, 0x1fe, 2, "\125\252", probe_fat }, ++ { "vfat", 0, 0x1fe, 2, "\125\252", probe_fat_nomagic }, { "minix", 1, 0x10, 2, "\177\023", 0 }, { "minix", 1, 0x10, 2, "\217\023", 0 }, { "minix", 1, 0x10, 2, "\150\044", 0 }, --- -1.5.2.4 - diff --git a/e2fsprogs.spec b/e2fsprogs.spec index b88bbb6..3740d9b 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -4,7 +4,7 @@ Summary: Utilities for managing the second and third extended (ext2/ext3) filesystems Name: e2fsprogs Version: 1.40.2 -Release: 11%{?dist} +Release: 12%{?dist} # License based on upstream-modified COPYING file, # which clearly states "V2" intent. License: GPLv2 @@ -267,6 +267,10 @@ exit 0 %{_mandir}/man3/uuid_unparse.3* %changelog +* Tue Nov 27 2007 Eric Sandeen 1.40.2-12 +- Use upstream patch for blkid fat detection, avoids div-by-zero + when encountering some BSD partitions (#398281) + * Tue Oct 23 2007 Eric Sandeen 1.40.2-11 - Add arm to multilib header wrapper