summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mack <daniel@zonque.org>2015-06-17 14:31:49 +0200
committerDaniel Mack <daniel@zonque.org>2015-06-17 14:43:11 +0200
commitd6e5f3ad1fdb7964d843c86f86d4ee7d806a0f93 (patch)
treec9c76e0a52079260f010c9ef09cfd6a332ce97bf
parent9d8a5fd3e62ee89073364a3f7fa95c50dc85d890 (diff)
core: execute: fix regression in pam_setup()
Commit 72c0a2c25 ("everywhere: port everything to sigprocmask_many() and friends") reworked code tree-wide to use the new sigprocmask_many() helper. In this, it caused a regression in pam_setup, because it dropped a line to initialize the 'ss' signal mask which is later used in sigwait(). While at it, move the variable declaration to an inner scope.
-rw-r--r--src/core/execute.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/core/execute.c b/src/core/execute.c
index 444865da86..a6ff5ac56e 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -771,7 +771,7 @@ static int setup_pam(
};
pam_handle_t *handle = NULL;
- sigset_t ss, old_ss;
+ sigset_t old_ss;
int pam_code = PAM_SUCCESS;
int err;
char **e = NULL;
@@ -868,6 +868,11 @@ static int setup_pam(
/* Check if our parent process might already have
* died? */
if (getppid() == parent_pid) {
+ sigset_t ss;
+
+ assert_se(sigemptyset(&ss) >= 0);
+ assert_se(sigaddset(&ss, SIGTERM) >= 0);
+
for (;;) {
if (sigwait(&ss, &sig) < 0) {
if (errno == EINTR)