]> wimlib.net Git - wimlib/blobdiff - src/lookup_table.c
read_wim_lookup_table(): Make sure all resources get validated (try 2)
[wimlib] / src / lookup_table.c
index 01f7383571c5f00899b6c7814f9f0e8323d398df..59d7c7cfdd55547ef3b4d55a61c1deadf666743c 100644 (file)
@@ -727,7 +727,6 @@ read_wim_lookup_table(WIMStruct *wim)
                        &((const struct wim_lookup_table_entry_disk*)buf)[i];
                struct wim_reshdr reshdr;
                u16 part_number;
-               struct wim_lookup_table_entry *duplicate_entry;
 
                /* Get the resource header  */
                get_wim_reshdr(&disk_entry->reshdr, &reshdr);
@@ -947,8 +946,7 @@ read_wim_lookup_table(WIMStruct *wim)
                        /* Lookup table entry for a non-metadata stream.  */
 
                        /* Ignore this stream if it's a duplicate.  */
-                       duplicate_entry = lookup_stream(table, cur_entry->hash);
-                       if (duplicate_entry) {
+                       if (lookup_stream(table, cur_entry->hash)) {
                                num_duplicate_entries++;
                                goto free_cur_entry_and_continue;
                        }
@@ -976,7 +974,10 @@ read_wim_lookup_table(WIMStruct *wim)
                        cur_entry->offset_in_res = 0;
                        cur_entry->size = reshdr.uncompressed_size;
                        cur_entry->flags = reshdr.flags;
+                       ret = validate_resource(cur_rspec);
                        cur_rspec = NULL;
+                       if (ret)
+                               goto out;
                }
                continue;