diff options
Diffstat (limited to 'arguments.c')
-rw-r--r-- | arguments.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arguments.c b/arguments.c index 669375e2..f96f0471 100644 --- a/arguments.c +++ b/arguments.c @@ -164,10 +164,14 @@ args_parse_flag_argument(struct args_value *values, u_int count, char **cause, argument = &values[*i]; if (argument->type != ARGS_STRING) { xasprintf(cause, "-%c argument must be a string", flag); + args_free_value(new); + free(new); return (-1); } } if (argument == NULL) { + args_free_value(new); + free(new); if (optional_argument) { log_debug("%s: -%c (optional)", __func__, flag); args_set(args, flag, NULL, ARGS_ENTRY_OPTIONAL_VALUE); @@ -662,6 +666,8 @@ args_set(struct args *args, u_char flag, struct args_value *value, int flags) entry->count++; if (value != NULL && value->type != ARGS_NONE) TAILQ_INSERT_TAIL(&entry->values, value, entry); + else + free(value); } /* Get argument value. Will be NULL if it isn't present. */ |