]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: refuse --capsule=foo with --system
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 4 Aug 2024 05:07:13 +0000 (14:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 4 Aug 2024 05:21:32 +0000 (14:21 +0900)
Fixes the following assertion:
===
systemctl --capsule=hoge --system reboot
Assertion 'runtime_scope == RUNTIME_SCOPE_USER' failed at src/shared/bus-util.c:479, function bus_connect_transport(). Aborting.
Aborted (core dumped)
===

Follow-up for 56cb74c3cd1358d7d0b3f613feaf2eeab601a6bd.

src/systemctl/systemctl.c

index 5bb6ccacf7f93804912a56853dcb5269fbc1044d..1e36455cf21e1ade8abe18907c20564b32515198 100644 (file)
@@ -1075,6 +1075,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                        "Cannot access user instance remotely.");
 
+        if (arg_transport == BUS_TRANSPORT_CAPSULE && arg_runtime_scope != RUNTIME_SCOPE_USER)
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                       "Cannot access system instance with --capsule=/-C.");
+
         if (arg_wait && arg_no_block)
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                        "--wait may not be combined with --no-block.");