summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-03-03 20:11:09 +0100
committerKay Sievers <kay.sievers@vrfy.org>2009-03-03 20:11:09 +0100
commit1597517c9effc275b8b89c8722c808777c17173f (patch)
tree6c66cd623caa368df65341190ca5c4ec96c3e396
parent9270e080822df3be6d320248f98bfc71b3984abf (diff)
volume_id: ntfs - fix uuid setting
In my scenario, the ntfs prober did *not* detect the presence of a ntfs filesystem (i.e. vol_id --probe-all returned *only* ext3). However, if you examine the source of the ntfs prober, it overwrites the uuid field of the volume_id object long before it actually decides there's a valid filesystem there - this resulted in vol_id returning the rather bizarre combination of type=ext3, but a uuid populated by the ntfs prober. https://bugs.edge.launchpad.net/ubuntu/+source/udev/+bug/337015
-rw-r--r--configure.ac2
-rw-r--r--extras/volume_id/lib/ntfs.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index e916cfca9f..5b2d920721 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ AC_SUBST(LIBUDEV_LT_AGE)
dnl /* libvolume_id version */
VOLID_LT_CURRENT=1
-VOLID_LT_REVISION=9
+VOLID_LT_REVISION=10
VOLID_LT_AGE=0
AC_SUBST(VOLID_LT_CURRENT)
AC_SUBST(VOLID_LT_REVISION)
diff --git a/extras/volume_id/lib/ntfs.c b/extras/volume_id/lib/ntfs.c
index b322c77dbd..f727634094 100644
--- a/extras/volume_id/lib/ntfs.c
+++ b/extras/volume_id/lib/ntfs.c
@@ -97,6 +97,7 @@ static struct volume_info {
int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
{
+ uint8_t volume_serial[8];
unsigned int sector_size;
unsigned int cluster_size;
uint64_t mft_cluster;
@@ -119,7 +120,7 @@ int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
if (memcmp(ns->oem_id, "NTFS", 4) != 0)
return -1;
- volume_id_set_uuid(id, ns->volume_serial, 0, UUID_64BIT_LE);
+ memcpy(volume_serial, ns->volume_serial, sizeof(volume_serial));
sector_size = le16_to_cpu(ns->bytes_per_sector);
if (sector_size < 0x200)
@@ -193,6 +194,7 @@ int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
}
}
+ volume_id_set_uuid(id, volume_serial, 0, UUID_64BIT_LE);
volume_id_set_usage(id, VOLUME_ID_FILESYSTEM);
id->type = "ntfs";
/* we think this is ntfs, but we make sure no other signatures are found */