From: Zbigniew Jędrzejewski-Szmek Date: Tue, 16 Feb 2021 13:19:36 +0000 (+0100) Subject: systemctl: use free_and_replace on global variable X-Git-Tag: v248-rc1~99^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=36556f6e514095d220d1cdb37697a07f4b6061d3;p=thirdparty%2Fsystemd.git systemctl: use free_and_replace on global variable In normal usage we cannot set it multiple times, but from a fuzzer we may. Doing it this way is nicer anyway. --- diff --git a/src/systemctl/systemctl-compat-shutdown.c b/src/systemctl/systemctl-compat-shutdown.c index d876c79d33f..11154f5f8b2 100644 --- a/src/systemctl/systemctl-compat-shutdown.c +++ b/src/systemctl/systemctl-compat-shutdown.c @@ -132,9 +132,10 @@ int shutdown_parse_argv(int argc, char *argv[]) { wall = argv + optind + 1; if (wall) { - arg_wall = strv_copy(wall); - if (!arg_wall) + char **copy = strv_copy(wall); + if (!copy) return log_oom(); + strv_free_and_replace(arg_wall, copy); } optind = argc; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b82e541d7a6..b27da5dad9f 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1159,8 +1159,8 @@ static int run(int argc, char *argv[]) { case ACTION_SUSPEND_THEN_HIBERNATE: case ACTION_EMERGENCY: case ACTION_DEFAULT: - /* systemctl verbs with no equivalent in the legacy commands. These cannot appear in - * arg_action. Fall through. */ + /* systemctl verbs with no equivalent in the legacy commands. These cannot appear in + * arg_action. Fall through. */ case _ACTION_INVALID: default: