diff --git a/src/newgrp.c b/src/newgrp.c index f8387f11..0bcf31ba 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -288,6 +288,9 @@ static void syslog_sg (const char *name, const char *group) (void) signal (SIGTSTP, SIG_IGN); (void) signal (SIGTTIN, SIG_IGN); (void) signal (SIGTTOU, SIG_IGN); + /* set SIGCHLD to default for waitpid */ + (void) signal(SIGCHLD, SIG_DFL); + child = fork (); if ((pid_t)-1 == child) { /* error in fork() */ diff --git a/src/useradd.c b/src/useradd.c index 152b4e53..e3123615 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -20,6 +20,7 @@ #include #include #include +#include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -2156,6 +2157,9 @@ static void tallylog_reset (const char *user_name) if (access(pam_tally2, X_OK) == -1) return; + /* set SIGCHLD to default for waitpid */ + signal(SIGCHLD, SIG_DFL); + failed = 0; switch (childpid = fork()) {