diff --git a/src/signal_handler.c b/src/signal_handler.c index c2332d904cc91886dccb4d9d4e0ed10fa93358de..e006be2ce07e9ea5c3be6d4158e70d48cdd0f5a5 100644 --- a/src/signal_handler.c +++ b/src/signal_handler.c @@ -310,6 +310,13 @@ static RETSIGTYPE receive_signal(int signum) { int tmp; + if ((signum < 0) || (signum >= MAX_SIGNALS)) { + // Some OSs (Solaris 2.6) send a bad signum sometimes. + // SIGCHLD is the safest signal to substitute. + // /grubba 1998-05-19 + signum = SIGCHLD; + } + tmp=firstsig+1; if(tmp == SIGNAL_BUFFER) tmp=0; if(tmp != lastsig)