X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fresource.c;h=4832030c12adb5c44b90cd429d5deebca6b50098;hp=013f9ec5145e44e54efa26ccb06923675e323506;hb=79b64b516e5bdb486832f88788362dbe9deb1b61;hpb=f9a65bc36b0c82a7c46feec9140129fd5110289c diff --git a/src/resource.c b/src/resource.c index 013f9ec5..4832030c 100644 --- a/src/resource.c +++ b/src/resource.c @@ -1288,7 +1288,6 @@ int write_metadata_resource(WIMStruct *w) struct lookup_table_entry *lte; u64 metadata_original_size; const struct wim_security_data *sd; - const unsigned random_tail_len = 20; DEBUG("Writing metadata resource for image %d", w->current_image); @@ -1314,7 +1313,7 @@ int write_metadata_resource(WIMStruct *w) calculate_subdir_offsets(root, &subdir_offset); /* Total length of the metadata resource (uncompressed) */ - metadata_original_size = subdir_offset + random_tail_len; + metadata_original_size = subdir_offset; /* Allocate a buffer to contain the uncompressed metadata resource */ buf = MALLOC(metadata_original_size); @@ -1330,18 +1329,9 @@ int write_metadata_resource(WIMStruct *w) /* Write the dentry tree into the resource buffer */ p = write_dentry_tree(root, p); - /* - * Append 20 random bytes to the metadata resource so that we don't have - * identical metadata resources if we happen to append exactly the same - * image twice without any changes in timestamps. If this were to - * happen, it would cause confusion about the number and order of images - * in the WIM. - */ - randomize_byte_array(p, random_tail_len); - /* We MUST have exactly filled the buffer; otherwise we calculated its * size incorrectly or wrote the data incorrectly. */ - wimlib_assert(p - buf + random_tail_len == metadata_original_size); + wimlib_assert(p - buf == metadata_original_size); /* Get the lookup table entry for the metadata resource so we can update * it. */ @@ -1362,14 +1352,17 @@ int write_metadata_resource(WIMStruct *w) /* It's very likely the SHA1 message digest of the metadata resource * changed, so re-insert the lookup table entry into the lookup table. + * + * We do not check for other lookup table entries having the same SHA1 + * message digest. It's possible for 2 absolutely identical images to + * be added, therefore causing 2 identical metadata resources to be in + * the WIM. However, in this case, it's expected for 2 separate lookup + * table entries to be created, even though this doesn't make a whole + * lot of sense since they will share the same SHA1 message digest. * */ lookup_table_unlink(w->lookup_table, lte); lookup_table_insert(w->lookup_table, lte); - /* We do not allow a metadata resource to be referenced multiple times, - * and the 20 random bytes appended to it should make it extremely - * likely for each metadata resource to be unique, even if the exact - * same image is captured. */ wimlib_assert(lte->out_refcnt == 0); lte->out_refcnt = 1;