1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-23 21:35:11 +03:00

systemctl: allocate arg_wall only on the heap

Previously, we'd allocate it sometimes from the heap, but otherwise let
it point directly int argv[]. Let's clean this up, so that we know
exactly how to release its resources, and do so at the end.
This commit is contained in:
Lennart Poettering 2015-09-24 12:30:05 +02:00
parent fc2ffaf17d
commit 172d7abfea

View File

@ -6835,6 +6835,7 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
{}
};
char **wall = NULL;
int c, r;
assert(argc >= 0);
@ -6908,10 +6909,16 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
if (argc > optind && arg_action == ACTION_CANCEL_SHUTDOWN)
/* No time argument for shutdown cancel */
arg_wall = argv + optind;
wall = argv + optind;
else if (argc > optind + 1)
/* We skip the time argument */
arg_wall = argv + optind + 1;
wall = argv + optind + 1;
if (wall) {
arg_wall = strv_copy(wall);
if (!arg_wall)
return log_oom();
}
optind = argc;
@ -7639,6 +7646,8 @@ finish:
strv_free(arg_states);
strv_free(arg_properties);
strv_free(arg_wall);
sd_bus_default_flush_close();
return r < 0 ? EXIT_FAILURE : r;