]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/sulogin-shell/sulogin-shell.c
tree-wide: introduce new safe_fork() helper and port everything over
[thirdparty/systemd.git] / src / sulogin-shell / sulogin-shell.c
index 70659df4170a57bf26361b456be77ca830d920d6..a6e0e0476f85de97f251793976c35f3442c51e08 100644 (file)
@@ -81,18 +81,13 @@ static int start_default_target(sd_bus *bus) {
 
 static int fork_wait(const char* const cmdline[]) {
         pid_t pid;
+        int r;
 
-        pid = fork();
-        if (pid < 0)
-                return log_error_errno(errno, "fork(): %m");
-        if (pid == 0) {
-
+        r = safe_fork("(sulogin)", FORK_RESET_SIGNALS|FORK_DEATHSIG, &pid);
+        if (r < 0)
+                return log_error_errno(r, "fork(): %m");
+        if (r == 0) {
                 /* Child */
-
-                (void) reset_all_signal_handlers();
-                (void) reset_signal_mask();
-                assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
-
                 execv(cmdline[0], (char**) cmdline);
                 log_error_errno(errno, "Failed to execute %s: %m", cmdline[0]);
                 _exit(EXIT_FAILURE); /* Operational error */