diff options
author | Karel Zak <kzak@redhat.com> | 2008-12-03 11:49:50 +0100 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2008-12-03 15:28:53 +0100 |
commit | 43f7e87f549c9b0630f27c05b0bf15102f1ed8cc (patch) | |
tree | 457d1853467ba63a790f1c1cb86f727307317f56 | |
parent | 1ac8fad8e56097cf8e08a0a17f044309317cb50f (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.c | 10 |
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; } |