summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2008-12-03 11:49:50 +0100
committerKay Sievers <kay.sievers@vrfy.org>2008-12-03 15:28:53 +0100
commit43f7e87f549c9b0630f27c05b0bf15102f1ed8cc (patch)
tree457d1853467ba63a790f1c1cb86f727307317f56
parent1ac8fad8e56097cf8e08a0a17f044309317cb50f (diff)
volume_id: HPFS code clean up
* fix typo (hs vs. hbb) * set id->{version,usage,type} when all tests pass * be paranoid and don't use hs->version when "hs" source buffer was possibly modified by next volume_id_get_buffer() call. Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--extras/volume_id/lib/hpfs.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/extras/volume_id/lib/hpfs.c b/extras/volume_id/lib/hpfs.c
index ce9118d370..0f0770f05f 100644
--- a/extras/volume_id/lib/hpfs.c
+++ b/extras/volume_id/lib/hpfs.c
@@ -79,6 +79,7 @@ int volume_id_probe_hpfs(struct volume_id *id, uint64_t off, uint64_t size)
struct hpfs_super *hs;
struct hpfs_spare_super *hss;
struct hpfs_boot_block *hbb;
+ uint8_t version;
info("probing at offset 0x%" PRIx64 "\n", off);
@@ -94,13 +95,11 @@ int volume_id_probe_hpfs(struct volume_id *id, uint64_t off, uint64_t size)
if (memcmp(hss->magic, "\x49\x18\x91\xf9", 4) != 0)
return -1;
- sprintf(id->type_version, "%u", hs->version);
- volume_id_set_usage(id, VOLUME_ID_FILESYSTEM);
- id->type = "hpfs";
+ version = hs->version;
/* if boot block looks valid, read label and uuid from there */
hbb = (struct hpfs_boot_block *) volume_id_get_buffer(id, off, 0x200);
- if (hs == NULL)
+ if (hbb == NULL)
return -1;
if (memcmp(hbb->magic, "\x55\xaa", 2) == 0 &&
memcmp(hbb->sig_hpfs, "HPFS", 4) == 0 &&
@@ -109,6 +108,9 @@ int volume_id_probe_hpfs(struct volume_id *id, uint64_t off, uint64_t size)
volume_id_set_label_string(id, hbb->vol_label, 11);
volume_id_set_uuid(id, hbb->vol_serno, 0, UUID_DOS);
}
+ sprintf(id->type_version, "%u", version);
+ volume_id_set_usage(id, VOLUME_ID_FILESYSTEM);
+ id->type = "hpfs";
return 0;
}