tmpfiles: fix memory leak in arg_exclude_prefixes

When using the `--image` or `-E` options, `arg_exclude_prefixes` is extended via
the `exclude_default_prefixes` function, which calls `strv_extend_strv`, adding
values using `strdup` that must be freed on exit.

Also changing `arg_include_prefixes` to use the same model, although there is no
leak here.
This commit is contained in:
Antonio Alvarez Feijoo
2024-01-08 19:08:42 +01:00
committed by Lennart Poettering
parent 4bcd606815
commit 7f13af72f8
+4 -4
View File
@@ -218,8 +218,8 @@ typedef struct Context {
Set *unix_sockets;
} Context;
STATIC_DESTRUCTOR_REGISTER(arg_include_prefixes, freep);
STATIC_DESTRUCTOR_REGISTER(arg_exclude_prefixes, freep);
STATIC_DESTRUCTOR_REGISTER(arg_include_prefixes, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_exclude_prefixes, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_root, freep);
STATIC_DESTRUCTOR_REGISTER(arg_image, freep);
STATIC_DESTRUCTOR_REGISTER(arg_image_policy, image_policy_freep);
@@ -4129,12 +4129,12 @@ static int parse_argv(int argc, char *argv[]) {
break;
case ARG_PREFIX:
if (strv_push(&arg_include_prefixes, optarg) < 0)
if (strv_extend(&arg_include_prefixes, optarg) < 0)
return log_oom();
break;
case ARG_EXCLUDE_PREFIX:
if (strv_push(&arg_exclude_prefixes, optarg) < 0)
if (strv_extend(&arg_exclude_prefixes, optarg) < 0)
return log_oom();
break;