]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tty-ask-password: simplify signal handler installation
authorLennart Poettering <lennart@poettering.net>
Tue, 2 Apr 2019 08:10:02 +0000 (10:10 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 2 Apr 2019 08:19:22 +0000 (10:19 +0200)
src/tty-ask-password-agent/tty-ask-password-agent.c

index 4633779837a59e1870362402efb4efdd4d52aeb7..17cf35126fbb99594723c6a03a141bab25dfc800 100644 (file)
@@ -697,23 +697,24 @@ static int parse_argv(int argc, char *argv[]) {
  */
 static int ask_on_this_console(const char *tty, pid_t *ret_pid, char *argv[]) {
         _cleanup_strv_free_ char **arguments = NULL;
-        struct sigaction sig = {
+        static const struct sigaction sigchld = {
                 .sa_handler = nop_signal_handler,
                 .sa_flags = SA_NOCLDSTOP | SA_RESTART,
         };
+        static const struct sigaction sighup = {
+                .sa_handler = SIG_DFL,
+                .sa_flags = SA_RESTART,
+        };
         int r;
 
         arguments = strv_copy(argv);
         if (!arguments)
                 return log_oom();
 
+        assert_se(sigaction(SIGCHLD, &sigchld, NULL) >= 0);
+        assert_se(sigaction(SIGHUP, &sighup, NULL) >= 0);
         assert_se(sigprocmask_many(SIG_UNBLOCK, NULL, SIGHUP, SIGCHLD, -1) >= 0);
 
-        assert_se(sigaction(SIGCHLD, &sig, NULL) >= 0);
-
-        sig.sa_handler = SIG_DFL;
-        assert_se(sigaction(SIGHUP, &sig, NULL) >= 0);
-
         r = safe_fork("(sd-passwd)", FORK_RESET_SIGNALS|FORK_LOG, ret_pid);
         if (r < 0)
                 return r;