]> wimlib.net Git - wimlib/blobdiff - src/metadata_resource.c
Avoid passing NULL as memcpy source (undefined behavior)
[wimlib] / src / metadata_resource.c
index 2a3279494ad56c7f4fc68c2d82022d000491dc91..4cd53032cbbca435f3a0c3b824acc61fe8303e16 100644 (file)
@@ -73,29 +73,24 @@ read_metadata_resource(struct wim_image_metadata *imd)
        const struct blob_descriptor *metadata_blob;
        void *buf;
        int ret;
+       u8 hash[SHA1_HASH_SIZE];
        struct wim_security_data *sd;
        struct wim_dentry *root;
 
        metadata_blob = imd->metadata_blob;
 
-       DEBUG("Reading metadata resource (size=%"PRIu64").", metadata_blob->size);
-
        /* Read the metadata resource into memory.  (It may be compressed.)  */
        ret = read_blob_into_alloc_buf(metadata_blob, &buf);
        if (ret)
                return ret;
 
        /* Checksum the metadata resource.  */
-       if (!metadata_blob->dont_check_metadata_hash) {
-               u8 hash[SHA1_HASH_SIZE];
-
-               sha1_buffer(buf, metadata_blob->size, hash);
-               if (!hashes_equal(metadata_blob->hash, hash)) {
-                       ERROR("Metadata resource is corrupted "
-                             "(invalid SHA-1 message digest)!");
-                       ret = WIMLIB_ERR_INVALID_METADATA_RESOURCE;
-                       goto out_free_buf;
-               }
+       sha1_buffer(buf, metadata_blob->size, hash);
+       if (!hashes_equal(metadata_blob->hash, hash)) {
+               ERROR("Metadata resource is corrupted "
+                     "(invalid SHA-1 message digest)!");
+               ret = WIMLIB_ERR_INVALID_METADATA_RESOURCE;
+               goto out_free_buf;
        }
 
        /* Parse the metadata resource.
@@ -132,7 +127,6 @@ read_metadata_resource(struct wim_image_metadata *imd)
        imd->root_dentry = root;
        imd->security_data = sd;
        INIT_LIST_HEAD(&imd->unhashed_blobs);
-       DEBUG("Done parsing metadata resource.");
        return 0;
 
 out_free_dentry_tree:
@@ -166,8 +160,6 @@ prepare_metadata_resource(WIMStruct *wim, int image,
        struct wim_security_data *sd;
        struct wim_image_metadata *imd;
 
-       DEBUG("Preparing metadata resource for image %d", image);
-
        ret = select_wim_image(wim, image);
        if (ret)
                return ret;
@@ -250,9 +242,6 @@ write_metadata_resource(WIMStruct *wim, int image, int write_resource_flags)
                                             imd->metadata_blob->hash,
                                             write_resource_flags);
 
-       /* Original checksum was overridden; set a flag so it isn't used.  */
-       imd->metadata_blob->dont_check_metadata_hash = 1;
-
        FREE(buf);
        return ret;
 }