summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-09-26 14:47:21 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-09-26 14:47:21 +0200
commit1f8c579badcc777bb7012675a39d3e13cbaf818e (patch)
tree7ca06bc2482469c65fccb2392ca0996465fb4cf6
parenta8b1e96d7bf91d97646789c1805587ca1ebba3e9 (diff)
parent9c8f4f49b02f2d92e618e7b70a9e23a3c8d4c8aa (diff)
downloadrsyslog-1f8c579badcc777bb7012675a39d3e13cbaf818e.tar.gz
rsyslog-1f8c579badcc777bb7012675a39d3e13cbaf818e.tar.bz2
rsyslog-1f8c579badcc777bb7012675a39d3e13cbaf818e.zip
Merge branch 'v7-stable'
Conflicts: plugins/omprog/omprog.c
-rw-r--r--ChangeLog4
-rw-r--r--plugins/omprog/omprog.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 93e9d1eb..af7ca978 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -105,6 +105,10 @@ Version 7.5.0 [devel] 2013-06-11
Thanks to Axel Rau for the patch.
---------------------------------------------------------------------------
Version 7.4.5 [v7.4-stable] 2013-09-??
+- bugfix: omprog blocked signals to executed programs
+ The made it impossible to send signals to programs executed via
+ omprog.
+ Thanks to Risto Vaarandi for the analysis and a patch.
- bugfix: doc: imuxsock legacy param $SystemLogSocketParseTrusted was
misspelled
Thanks to David Lang for alerting us
diff --git a/plugins/omprog/omprog.c b/plugins/omprog/omprog.c
index 940ef8d7..5f3b112f 100644
--- a/plugins/omprog/omprog.c
+++ b/plugins/omprog/omprog.c
@@ -131,6 +131,8 @@ static void execBinary(instanceData *pData, int fdStdin)
{
int i, iRet;
struct sigaction sigAct;
+ sigset_t set;
+ char *newargv[] = { NULL };
char *newenviron[] = { NULL };
assert(pData != NULL);
@@ -154,10 +156,12 @@ static void execBinary(instanceData *pData, int fdStdin)
/* reset signal handlers to default */
memset(&sigAct, 0, sizeof(sigAct));
- sigfillset(&sigAct.sa_mask);
+ sigemptyset(&sigAct.sa_mask);
sigAct.sa_handler = SIG_DFL;
for(i = 1 ; i < NSIG ; ++i)
sigaction(i, &sigAct, NULL);
+ sigemptyset(&set);
+ sigprocmask(SIG_SETMASK, &set, NULL);
alarm(0);