diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-01-27 06:17:51 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-01-27 06:17:51 +0100 |
commit | 309bff19edec5e5a5f6c66ead3b0aa1eb55e7bc7 (patch) | |
tree | 31e10083bd7c618c23c92c12ecd8f069d8d97e91 /execute.c | |
parent | e9af15c34c05ec1d79766911b722b6ab91d0c79d (diff) |
reset signal mask when forking
Diffstat (limited to 'execute.c')
-rw-r--r-- | execute.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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) { |