]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/main: add an assertion to ensure user managers won't initiate destructive/system... 33575/head
authorMike Yuan <me@yhndnzj.com>
Tue, 2 Jul 2024 16:14:33 +0000 (18:14 +0200)
committerMike Yuan <me@yhndnzj.com>
Wed, 3 Jul 2024 08:12:53 +0000 (10:12 +0200)
src/core/main.c

index 6792a79c1f4eb8ffcebd78a769a2e95465331790..8dc0245fa0c993d6f0493a240732a8e95fc3ea11 100644 (file)
@@ -3285,14 +3285,15 @@ int main(int argc, char *argv[]) {
                              &switch_root_dir,
                              &switch_root_init,
                              &error_message);
-        assert(r < 0 || IN_SET(r, MANAGER_EXIT,          /* MANAGER_OK and MANAGER_RELOAD are not expected here. */
-                                  MANAGER_REEXECUTE,
-                                  MANAGER_REBOOT,
-                                  MANAGER_SOFT_REBOOT,
-                                  MANAGER_POWEROFF,
-                                  MANAGER_HALT,
-                                  MANAGER_KEXEC,
-                                  MANAGER_SWITCH_ROOT));
+        /* MANAGER_OK and MANAGER_RELOAD are not expected here. */
+        assert(r < 0 || IN_SET(r, MANAGER_REEXECUTE, MANAGER_EXIT) ||
+               (arg_runtime_scope == RUNTIME_SCOPE_SYSTEM &&
+                IN_SET(r, MANAGER_REBOOT,
+                          MANAGER_SOFT_REBOOT,
+                          MANAGER_POWEROFF,
+                          MANAGER_HALT,
+                          MANAGER_KEXEC,
+                          MANAGER_SWITCH_ROOT)));
 
 finish:
         pager_close();