reset signal mask when forking

This commit is contained in:
Lennart Poettering 2010-01-27 06:17:51 +01:00
parent e9af15c34c
commit 309bff19ed
2 changed files with 11 additions and 1 deletions

View File

@ -6,6 +6,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include "execute.h"
#include "strv.h"
@ -121,8 +122,16 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds,
char **e, **f = NULL;
int i, r;
char t[16];
sigset_t ss;
/* child */
if (sigemptyset(&ss) < 0 ||
sigprocmask(SIG_SETMASK, &ss, NULL) < 0) {
r = EXIT_SIGNAL_MASK;
goto fail;
}
umask(context->umask);
if (chdir(context->directory ? context->directory : "/") < 0) {

View File

@ -71,7 +71,8 @@ typedef enum ExitStatus {
EXIT_EXEC,
EXIT_MEMORY,
EXIT_LIMITS,
EXIT_OOM_ADJUST
EXIT_OOM_ADJUST,
EXIT_SIGNAL_MASK
} ExitStatus;
int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds, unsigned n_fds, pid_t *ret);