From: Lennart Poettering Date: Thu, 9 Feb 2017 20:01:28 +0000 (+0100) Subject: dbus: permit seeing process list of units whose unit files are missing X-Git-Tag: v233~116^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa07c85956e28db3f6e23c21b65d28d5edb77ba3;p=thirdparty%2Fsystemd.git 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 --- diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 0136d38833f..b4489ea9353 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); }