aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar M. Sean Finney <seanius@users.sourceforge.net> 2005-05-01 20:12:03 +0000
committerGravatar M. Sean Finney <seanius@users.sourceforge.net> 2005-05-01 20:12:03 +0000
commit1cd64d081d1745436dd7c41826dfb05672dd26aa (patch)
treeada88d06239ac42dc15db353c15e6186a5a82fcc
parent205dda8d6e2922661cd4c33c94cb42739b397920 (diff)
downloadmonitoring-plugins-1cd64d081d1745436dd7c41826dfb05672dd26aa.tar.gz
better error checking in spopen signal handler (see 1107524)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1169 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/popen.c6
-rw-r--r--plugins/popen.h8
2 files changed, 9 insertions, 5 deletions
diff --git a/plugins/popen.c b/plugins/popen.c
index 04eb3881..062cf274 100644
--- a/plugins/popen.c
+++ b/plugins/popen.c
@@ -243,8 +243,12 @@ static int openmax = 0;
void
popen_timeout_alarm_handler (int signo)
{
+ int fh;
if (signo == SIGALRM) {
- kill (childpid[fileno (child_process)], SIGKILL);
+ fh=fileno (child_process);
+ if(fh >= 0){
+ kill (childpid[fh], SIGKILL);
+ }
printf (_("CRITICAL - Plugin timed out after %d seconds\n"),
timeout_interval);
exit (STATE_CRITICAL);
diff --git a/plugins/popen.h b/plugins/popen.h
index 1f4e413a..c2a79df0 100644
--- a/plugins/popen.h
+++ b/plugins/popen.h
@@ -9,7 +9,7 @@ int spclose (FILE *);
RETSIGTYPE popen_timeout_alarm_handler (int);
extern unsigned int timeout_interval;
-pid_t *childpid;
-int *child_stderr_array;
-FILE *child_process;
-FILE *child_stderr;
+pid_t *childpid=NULL;
+int *child_stderr_array=NULL;
+FILE *child_process=NULL;
+FILE *child_stderr=NULL;