diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-02-09 21:01:28 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-02-09 21:04:22 +0100 |
commit | fa07c85956e28db3f6e23c21b65d28d5edb77ba3 (patch) | |
tree | 027f8d71d7a94557cfdd9139dac586e833f5477b /src | |
parent | 9c0f732c62b18304973f1ede23d4a48191f5db43 (diff) |
dbus: permit seeing process list of units whose unit files are missing
Previously, we'd refuse the GetUnitProcesses() bus call if the unit file
couldn't be loaded. Which is wrong, as admins should be able to inspect
services whose unit files was deleted. Change this logic, so that we
permit introspecting the processes of any unit that is loaded,
regardless if it has a unit file or not.
(Note that we won't load unit files in GetUnitProcess(), but only
operate on already loaded ones. That's because only loaded units can
have processes — as that's how our GC logic works — and hence loading
the unit just for the process tree is pointless, as it would be empty).
See: #4995
Diffstat (limited to 'src')
-rw-r--r-- | src/core/dbus-manager.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 0136d38833..b4489ea935 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -848,13 +848,9 @@ static int method_get_unit_processes(sd_bus_message *message, void *userdata, sd if (r < 0) return r; - r = manager_load_unit(m, name, NULL, error, &u); - if (r < 0) - return r; - - r = bus_unit_check_load_state(u, error); - if (r < 0) - return r; + u = manager_get_unit(m, name); + if (!u) + return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s not loaded.", name); return bus_unit_method_get_processes(message, u, error); } |