From: gvenugo3 Date: Tue, 11 Nov 2025 16:55:59 +0000 (-0700) Subject: systemctl: check if unit is masked in unit_find_paths() X-Git-Tag: v259-rc1~93^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=423a8ffccc79922b35a3d452f9ca6201fbcfd14d;p=thirdparty%2Fsystemd.git systemctl: check if unit is masked in unit_find_paths() When operating in client-side mode (force_client_side=true), unit_find_paths() now checks if the unit file is masked (symlinked to /dev/null or empty) and returns -ERFKILL, matching the behavior of the server-side path. This centralizes masked unit detection in one place, making it consistent across both client-side and server-side operations. --- diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c index 71f14b8abf3..20bae11fa2b 100644 --- a/src/systemctl/systemctl-util.c +++ b/src/systemctl/systemctl-util.c @@ -29,6 +29,7 @@ #include "reboot-util.h" #include "runtime-scope.h" #include "set.h" +#include "stat-util.h" #include "string-util.h" #include "strv.h" #include "systemctl.h" @@ -589,6 +590,13 @@ int unit_find_paths( return log_error_errno(r, "Failed to find fragment for '%s': %m", unit_name); if (_path) { + /* Check if unit is masked (symlinked to /dev/null or empty) */ + r = null_or_empty_path(_path); + if (r < 0) + return log_error_errno(r, "Failed to check if '%s' is masked: %m", unit_name); + if (r > 0) + return -ERFKILL; /* special case: no logging */ + path = strdup(_path); if (!path) return log_oom();