* Tue Nov 27 2007 Eric Sandeen <esandeen@redhat.com> 1.40.2-12

- Use upstream patch for blkid fat detection, avoids div-by-zero
  when encountering some BSD partitions (#398281)
This commit is contained in:
Eric Sandeen 2007-11-27 16:21:18 +00:00
parent 8718d2dc3a
commit 0d33055625
2 changed files with 25 additions and 53 deletions

View File

@ -1,67 +1,35 @@
From 3a493033ce3867a2561d60c1016dd0c03999e5eb Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
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 <tytso@mit.edu>
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 <kzak@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
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

View File

@ -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 <esandeen@redhat.com> 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 <esandeen@redhat.com> 1.40.2-11
- Add arm to multilib header wrapper