From 70510c2c908958a744a1ba39963162b720cd7115 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 31 Jan 2026 15:30:33 +0900 Subject: [PATCH 1/3] ssh-generator: fix memleak --- src/ssh-generator/ssh-generator.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ssh-generator/ssh-generator.c b/src/ssh-generator/ssh-generator.c index 5cb4c98b8a..bc41e2a3aa 100644 --- a/src/ssh-generator/ssh-generator.c +++ b/src/ssh-generator/ssh-generator.c @@ -37,6 +37,8 @@ static const char *arg_dest = NULL; static bool arg_auto = true; static char **arg_listen_extra = NULL; +STATIC_DESTRUCTOR_REGISTER(arg_listen_extra, strv_freep); + static int parse_proc_cmdline_item(const char *key, const char *value, void *data) { int r; From 9666541a568449c30d3e804e7f8a9150fbd97b50 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 31 Jan 2026 15:30:58 +0900 Subject: [PATCH 2/3] ssh-generator: drop redundant check The loop STRV_FOREACH() below does nothing if the strv is empty. --- src/ssh-generator/ssh-generator.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/ssh-generator/ssh-generator.c b/src/ssh-generator/ssh-generator.c index bc41e2a3aa..49a01334f5 100644 --- a/src/ssh-generator/ssh-generator.c +++ b/src/ssh-generator/ssh-generator.c @@ -357,9 +357,6 @@ static int add_extra_sockets( assert(sshd_binary); assert(generated_sshd_template_unit); - if (strv_isempty(arg_listen_extra)) - return 0; - STRV_FOREACH(i, arg_listen_extra) { _cleanup_free_ char *service = NULL, *socket = NULL; From 9b011d3f5e8a5a3296e2b646cff996b70e9fb8d0 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 31 Jan 2026 15:31:36 +0900 Subject: [PATCH 3/3] ssh-generator: drop unused variable --- src/ssh-generator/ssh-generator.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ssh-generator/ssh-generator.c b/src/ssh-generator/ssh-generator.c index 49a01334f5..e596d36933 100644 --- a/src/ssh-generator/ssh-generator.c +++ b/src/ssh-generator/ssh-generator.c @@ -33,7 +33,6 @@ * The first two provide a nice way for hosts to connect to containers and VMs they invoke via the usual SSH * logic, but without waiting for networking or suchlike. The third allows the same for local clients. */ -static const char *arg_dest = NULL; static bool arg_auto = true; static char **arg_listen_extra = NULL; @@ -444,7 +443,7 @@ static int parse_credentials(void) { static int run(const char *dest, const char *dest_early, const char *dest_late) { int r; - assert_se(arg_dest = dest); + assert(dest); r = proc_cmdline_parse(parse_proc_cmdline_item, /* userdata= */ NULL, /* flags= */ 0); if (r < 0)