diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c index bc1be36bd2..6e87b18494 100644 --- a/src/systemctl/systemctl-util.c +++ b/src/systemctl/systemctl-util.c @@ -36,6 +36,9 @@ int acquire_bus(BusFocus focus, sd_bus **ret) { assert(focus < _BUS_FOCUS_MAX); assert(ret); + if (!IN_SET(arg_runtime_scope, RUNTIME_SCOPE_SYSTEM, RUNTIME_SCOPE_USER)) + return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "--global is not supported for this operation."); + /* We only go directly to the manager, if we are using a local transport */ if (arg_transport != BUS_TRANSPORT_LOCAL) focus = BUS_FULL; diff --git a/test/fuzz/fuzz-systemctl-parse-argv/oss-fuzz-56915 b/test/fuzz/fuzz-systemctl-parse-argv/oss-fuzz-56915 new file mode 100644 index 0000000000..17656f1fb9 Binary files /dev/null and b/test/fuzz/fuzz-systemctl-parse-argv/oss-fuzz-56915 differ