X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fintegrity.c;h=5cbe021e6f53ee0a4dc397abf51db33e68cb7d90;hb=98979811f22d45b56d2578df0fde56035f1f4b2d;hp=1eeb671aa178e93c1eb1ea44a819bc2500e9d53f;hpb=61db93f82eca3fe9f7676355c709c58cc425a6ad;p=wimlib diff --git a/src/integrity.c b/src/integrity.c index 1eeb671a..5cbe021e 100644 --- a/src/integrity.c +++ b/src/integrity.c @@ -110,6 +110,7 @@ static int read_integrity_table(WIMStruct *wim, u64 num_checked_bytes, struct integrity_table **table_ret) { + void *buf; struct integrity_table *table; int ret; @@ -120,9 +121,10 @@ read_integrity_table(WIMStruct *wim, u64 num_checked_bytes, "original_size %"PRIu64")", wim->hdr.integrity.offset, wim->hdr.integrity.original_size); - ret = res_entry_to_data(&wim->hdr.integrity, wim, (void**)&table); + ret = res_entry_to_data(&wim->hdr.integrity, wim, &buf); if (ret) return ret; + table = buf; table->size = le32_to_cpu(table->size); table->num_entries = le32_to_cpu(table->num_entries); @@ -326,16 +328,12 @@ write_integrity_table(WIMStruct *wim, struct integrity_table *old_table; struct integrity_table *new_table; int ret; - off_t cur_offset; u32 new_table_size; wimlib_assert(old_lookup_table_end <= new_lookup_table_end); - cur_offset = wim->out_fd.offset; - - if (wim->hdr.integrity.offset == 0 || old_lookup_table_end == 0) { - old_table = NULL; - } else { + old_table = NULL; + if (wim_has_integrity_table(wim) && old_lookup_table_end != 0) { ret = read_integrity_table(wim, old_lookup_table_end - WIM_HEADER_DISK_SIZE, &old_table); @@ -478,7 +476,7 @@ check_wim_integrity(WIMStruct *wim, wimlib_progress_func_t progress_func) struct integrity_table *table; u64 end_lookup_table_offset; - if (wim->hdr.integrity.offset == 0) { + if (!wim_has_integrity_table(wim)) { DEBUG("No integrity information."); return WIM_INTEGRITY_NONEXISTENT; }