X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fupdate_image.c;h=5a5ae69066f590f119fed933296a410c545be2bc;hp=b7a3abdff9c14ec64d6ac9d4ad0d142e6d396e16;hb=668c363a59c521f48eecbc4dd549c07a3e36179e;hpb=5d3d469e410dc5f4a28814ad231336fc174cba56 diff --git a/src/update_image.c b/src/update_image.c index b7a3abdf..5a5ae690 100644 --- a/src/update_image.c +++ b/src/update_image.c @@ -465,6 +465,21 @@ check_add_command(struct wimlib_update_command *cmd, { int add_flags = cmd->add.add_flags; + if (add_flags & ~(WIMLIB_ADD_FLAG_NTFS | + WIMLIB_ADD_FLAG_DEREFERENCE | + WIMLIB_ADD_FLAG_VERBOSE | + /* BOOT doesn't make sense for wimlib_update_image() */ + /*WIMLIB_ADD_FLAG_BOOT |*/ + WIMLIB_ADD_FLAG_UNIX_DATA | + WIMLIB_ADD_FLAG_NO_ACLS | + WIMLIB_ADD_FLAG_STRICT_ACLS | + WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE | + WIMLIB_ADD_FLAG_RPFIX | + WIMLIB_ADD_FLAG_NORPFIX | + WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE | + WIMLIB_ADD_FLAG_WINCONFIG)) + return WIMLIB_ERR_INVALID_PARAM; + /* Are we adding the entire image or not? An empty wim_target_path * indicates that the tree we're adding is to be placed in the root of * the image. We consider this to be capturing the entire image, @@ -534,6 +549,23 @@ check_add_command(struct wimlib_update_command *cmd, return 0; } +static int +check_delete_command(const struct wimlib_update_command *cmd) +{ + if (cmd->delete_.delete_flags & ~(WIMLIB_DELETE_FLAG_FORCE | + WIMLIB_DELETE_FLAG_RECURSIVE)) + return WIMLIB_ERR_INVALID_PARAM; + return 0; +} + +static int +check_rename_command(const struct wimlib_update_command *cmd) +{ + if (cmd->rename.rename_flags != 0) + return WIMLIB_ERR_INVALID_PARAM; + return 0; +} + static int check_update_command(struct wimlib_update_command *cmd, const struct wim_header *hdr) @@ -542,8 +574,9 @@ check_update_command(struct wimlib_update_command *cmd, case WIMLIB_UPDATE_OP_ADD: return check_add_command(cmd, hdr); case WIMLIB_UPDATE_OP_DELETE: + return check_delete_command(cmd); case WIMLIB_UPDATE_OP_RENAME: - break; + return check_rename_command(cmd); } return 0; } @@ -667,6 +700,9 @@ wimlib_update_image(WIMStruct *wim, struct wimlib_update_command *cmds_copy; bool deletion_requested = false; + if (update_flags & ~WIMLIB_UPDATE_FLAG_SEND_PROGRESS) + return WIMLIB_ERR_INVALID_PARAM; + DEBUG("Updating image %d with %zu commands", image, num_cmds); for (size_t i = 0; i < num_cmds; i++)