From 43f7e87f549c9b0630f27c05b0bf15102f1ed8cc Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 3 Dec 2008 11:49:50 +0100 Subject: [PATCH] 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 --- extras/volume_id/lib/hpfs.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extras/volume_id/lib/hpfs.c b/extras/volume_id/lib/hpfs.c index ce9118d37..0f0770f05 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; } -- 2.30.2