diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-10-01 14:27:20 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-10-01 14:27:20 +0200 |
commit | 7e9d36e06b85d87eb2c3aed507fe3aa1574c7880 (patch) | |
tree | dbc982dad39c4b09425c3ce0daea01f931249d7d /src | |
parent | 3d3145100d77a059b145a488df3d31763fdf1920 (diff) |
systemctl: fix how we decode types and states
There was a bad memory access among other smaller issues.
Diffstat (limited to 'src')
-rw-r--r-- | src/systemctl/systemctl.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 0615dd6aa5..420a246be1 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -6648,7 +6648,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { } if (unit_type_from_string(type) >= 0) { - if (strv_push(&arg_types, type)) + if (strv_push(&arg_types, type) < 0) return log_oom(); type = NULL; continue; @@ -6658,7 +6658,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { * load states, but let's support this * in --types= too for compatibility * with old versions */ - if (unit_load_state_from_string(optarg) >= 0) { + if (unit_load_state_from_string(type) >= 0) { if (strv_push(&arg_states, type) < 0) return log_oom(); type = NULL; @@ -6871,8 +6871,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { return 0; } - if (strv_consume(&arg_states, s) < 0) + if (strv_push(&arg_states, s) < 0) return log_oom(); + + s = NULL; } break; } |