This fixes the following assertion:
===
SYSTEMD_LOG_LEVEL=debug systemctl --user -H foo --boot-loader-entry=help
Assertion 'transport != BUS_TRANSPORT_REMOTE || runtime_scope == RUNTIME_SCOPE_SYSTEM' failed at src/shared/bus-util.c:284, function bus_connect_transport(). Ignoring.
Failed to connect to bus: Operation not supported
===
Fixes a bug introduced by
97af80c5a7029c3f92e982dcf9338b9e67ad9cde.
Fixes #33661.
Fixes oss-fuzz#70153.
sd_bus *bus;
int r;
+ /* This is called without checking runtime scope and bus transport like we do in parse_argv().
+ * Loading boot entries is only supported by system scope. Let's gracefully adjust them. */
+ arg_runtime_scope = RUNTIME_SCOPE_SYSTEM;
+ if (arg_transport == BUS_TRANSPORT_CAPSULE) {
+ arg_host = NULL;
+ arg_transport = BUS_TRANSPORT_LOCAL;
+ }
+
r = acquire_bus(BUS_FULL, &bus);
if (r < 0)
return r;