From 423a8ffccc79922b35a3d452f9ca6201fbcfd14d Mon Sep 17 00:00:00 2001 From: gvenugo3 Date: Tue, 11 Nov 2025 09:55:59 -0700 Subject: [PATCH] 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. --- src/systemctl/systemctl-util.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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(); -- 2.47.3