diff --git a/slave.c b/slave.c index fa57b86e..c4c6d4d0 100644 --- a/slave.c +++ b/slave.c @@ -275,11 +275,13 @@ slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv, } /* Restore signal mask, and SIG_IGN'd signals */ + const struct sigaction dfl = {.sa_handler = SIG_DFL}; sigset_t mask; sigemptyset(&mask); + if (sigprocmask(SIG_SETMASK, &mask, NULL) < 0 || - sigaction(SIGHUP, &(struct sigaction){.sa_handler = SIG_DFL}, NULL) < 0 || - sigaction(SIGPIPE, &(struct sigaction){.sa_handler = SIG_DFL}, NULL) < 0) + sigaction(SIGHUP, &dfl, NULL) < 0 || + sigaction(SIGPIPE, &dfl, NULL) < 0) { const int errno_copy = errno; LOG_ERRNO_P(errno, "failed to restore signals");