]> wimlib.net Git - wimlib/blobdiff - src/add_image.c
extract_trees(): Correctly destroy stream list in error path
[wimlib] / src / add_image.c
index 746c06a92dd43ed6d1cf0c427b5e1080988699ec..9b8cffb90f43b49b1708a8f9b02682814bf7add4 100644 (file)
@@ -45,14 +45,14 @@ add_new_dentry_tree(WIMStruct *wim, struct wim_dentry *root_dentry,
        int ret;
 
        metadata_lte = new_lookup_table_entry();
-       if (!metadata_lte)
+       if (metadata_lte == NULL)
                return WIMLIB_ERR_NOMEM;
 
-       metadata_lte->resource_entry.flags = WIM_RESHDR_FLAG_METADATA;
+       metadata_lte->flags = WIM_RESHDR_FLAG_METADATA;
        metadata_lte->unhashed = 1;
 
        new_imd = new_image_metadata();
-       if (!new_imd) {
+       if (new_imd == NULL) {
                free_lookup_table_entry(metadata_lte);
                return WIMLIB_ERR_NOMEM;
        }
@@ -92,7 +92,7 @@ wimlib_add_empty_image(WIMStruct *wim, const tchar *name, int *new_idx_ret)
        }
 
        sd = new_wim_security_data();
-       if (!sd) {
+       if (sd == NULL) {
                ret = WIMLIB_ERR_NOMEM;
                goto out;
        }
@@ -139,7 +139,7 @@ capture_sources_to_add_cmds(const struct wimlib_capture_source *sources,
                              sources[i].fs_source_path,
                              sources[i].wim_target_path);
                        add_cmds[i].op = WIMLIB_UPDATE_OP_ADD;
-                       add_cmds[i].add.add_flags = add_flags;
+                       add_cmds[i].add.add_flags = add_flags & ~WIMLIB_ADD_FLAG_BOOT;
                        add_cmds[i].add.config = (struct wimlib_capture_config*)config;
                        add_cmds[i].add.fs_source_path = sources[i].fs_source_path;
                        add_cmds[i].add.wim_target_path = sources[i].wim_target_path;
@@ -164,6 +164,10 @@ wimlib_add_image_multisource(WIMStruct *wim,
        DEBUG("Adding image \"%"TS"\" from %zu sources (add_flags=%#x)",
              name, num_sources, add_flags);
 
+       for (size_t i = 0; i < num_sources; i++)
+               if (sources[i].reserved != 0)
+                       return WIMLIB_ERR_INVALID_PARAM;
+
        /* Add the new image (initially empty) */
        ret = wimlib_add_empty_image(wim, name, NULL);
        if (ret)
@@ -172,7 +176,7 @@ wimlib_add_image_multisource(WIMStruct *wim,
        /* Translate the "capture sources" into generic update commands. */
        add_cmds = capture_sources_to_add_cmds(sources, num_sources,
                                               add_flags, config);
-       if (!add_cmds) {
+       if (add_cmds == NULL) {
                ret = WIMLIB_ERR_NOMEM;
                goto out_delete_image;
        }