systemctl: refuse to acquire dbus connection with --global

Maybe, better to check the runtime scope each verb for better log
message, but this is a good start point to not trigger assertion.

Fixes oss-fuzz#56915 (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56915).

Fixes #26402 and #26754.
This commit is contained in:
Yu Watanabe 2023-03-11 17:03:37 +09:00 committed by Lennart Poettering
parent 560900be67
commit d77d42ed3a
2 changed files with 3 additions and 0 deletions

View file

@ -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;

Binary file not shown.