diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-02-16 14:19:36 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-02-16 17:15:11 +0100 |
commit | 36556f6e514095d220d1cdb37697a07f4b6061d3 (patch) | |
tree | cedb35f3d3ff65b2fad86b8631515a7800396832 | |
parent | tree-wide: reset the cleaned-up variable in cleanup functions (diff) | |
download | systemd-36556f6e514095d220d1cdb37697a07f4b6061d3.tar.xz systemd-36556f6e514095d220d1cdb37697a07f4b6061d3.zip |
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.
-rw-r--r-- | src/systemctl/systemctl-compat-shutdown.c | 5 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/systemctl/systemctl-compat-shutdown.c b/src/systemctl/systemctl-compat-shutdown.c index d876c79d33..11154f5f8b 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 b82e541d7a..b27da5dad9 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: |