]> wimlib.net Git - wimlib/blobdiff - src/metadata_resource.c
Support for file exclusions via progress function
[wimlib] / src / metadata_resource.c
index ebd3332b9b773a06b7afd92376e1708c33e3feff..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;
 
@@ -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;
        }