From: Antonio Alvarez Feijoo Date: Mon, 8 Jan 2024 15:08:26 +0000 (+0100) Subject: tmpfiles: fix memory leak in arg_exclude_prefixes X-Git-Tag: v256-rc1~1236 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f13af72f894529502267e7eed8e8b480a350345;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index aa6e72207f3..94339d81631 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -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;