]> wimlib.net Git - wimlib/blobdiff - src/metadata_resource.c
update_image.c: Don't set RP_FIX until all commands have finished
[wimlib] / src / metadata_resource.c
index b80ee710bca6f81db4ac6b0c7bece9ef5f0bf344..ee3f80ca8bc9dc9338e7e03431b4184cefd724f8 100644 (file)
@@ -112,11 +112,8 @@ read_metadata_resource(WIMStruct *wim, struct wim_image_metadata *imd)
        if (ret)
                goto out_free_dentry_tree;
 
-       image_for_each_inode(inode, imd) {
-               ret = verify_inode(inode, sd);
-               if (ret)
-                       goto out_free_dentry_tree;
-       }
+       image_for_each_inode(inode, imd)
+               check_inode(inode, sd);
 
        /* Success; fill in the image_metadata structure.  */
        imd->root_dentry = root;
@@ -152,7 +149,7 @@ prepare_metadata_resource(WIMStruct *wim, int image,
        int ret;
        u64 subdir_offset;
        struct wim_dentry *root;
-       u64 len;
+       size_t len;
        struct wim_security_data *sd;
        struct wim_image_metadata *imd;
 
@@ -169,7 +166,7 @@ prepare_metadata_resource(WIMStruct *wim, int image,
 
        if (!root) {
                /* Empty image; create a dummy root.  */
-               ret = new_filler_directory(T(""), &root);
+               ret = new_filler_directory(&root);
                if (ret)
                        return ret;
                imd->root_dentry = root;
@@ -193,10 +190,12 @@ prepare_metadata_resource(WIMStruct *wim, int image,
        len = subdir_offset;
 
        /* Allocate a buffer to contain the uncompressed metadata resource.  */
-       buf = MALLOC(len);
+       buf = NULL;
+       if (likely(len == subdir_offset))
+               buf = MALLOC(len);
        if (!buf) {
                ERROR("Failed to allocate %"PRIu64" bytes for "
-                     "metadata resource", len);
+                     "metadata resource", subdir_offset);
                return WIMLIB_ERR_NOMEM;
        }