1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-31 14:50:15 +03:00

systemctl: fix bad memory access when processing PIDs on the "systemctl status" command line

This commit is contained in:
Lennart Poettering 2013-12-21 05:07:44 +01:00
parent e10a55fd72
commit 373d32c9f4

View File

@ -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);