diff options
author | pjd <pjd@FreeBSD.org> | 2010-10-16 22:48:48 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2010-10-16 22:48:48 +0000 |
commit | 884d1009d2260bf8c4f924b6ae87f35d840f635d (patch) | |
tree | 7cfcb94229d2571c983b9a14fcde63022e210456 /sbin | |
parent | 6634407233da6cf3787d1c6e2a151d9ea012f942 (diff) | |
download | FreeBSD-src-884d1009d2260bf8c4f924b6ae87f35d840f635d.zip FreeBSD-src-884d1009d2260bf8c4f924b6ae87f35d840f635d.tar.gz |
Clear signal mask before executing a hook.
Submitted by: Mikolaj Golub <to.my.trociny@gmail.com>
MFC after: 3 days
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/hastd/hooks.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sbin/hastd/hooks.c b/sbin/hastd/hooks.c index 9e12300..2e43357 100644 --- a/sbin/hastd/hooks.c +++ b/sbin/hastd/hooks.c @@ -354,6 +354,7 @@ hook_execv(const char *path, va_list ap) struct hookproc *hp; char *args[64]; unsigned int ii; + sigset_t mask; pid_t pid; assert(hooks_initialized); @@ -382,6 +383,8 @@ hook_execv(const char *path, va_list ap) return; case 0: /* Child. */ descriptors(); + PJDLOG_VERIFY(sigemptyset(&mask) == 0); + PJDLOG_VERIFY(sigprocmask(SIG_SETMASK, &mask, NULL) == 0); execv(path, args); pjdlog_errno(LOG_ERR, "Unable to execute %s", path); exit(EX_SOFTWARE); |