diff options
-rw-r--r-- | src/systemctl/systemctl.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index d1f68754a9..d0a03d9f29 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3678,6 +3678,7 @@ static int get_unit_dbus_path_by_pid( _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + char *u; int r; r = sd_bus_call_method( @@ -3694,10 +3695,15 @@ static int get_unit_dbus_path_by_pid( return r; } - r = sd_bus_message_read(reply, "o", unit); + r = sd_bus_message_read(reply, "o", &u); if (r < 0) return bus_log_parse_error(r); + u = strdup(u); + if (!u) + return log_oom(); + + *unit = u; return 0; } @@ -3880,8 +3886,10 @@ static int show(sd_bus *bus, char **args) { } else { /* Interpret as PID */ r = get_unit_dbus_path_by_pid(bus, id, &unit); - if (r < 0) + if (r < 0) { ret = r; + continue; + } } show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized); |