]> granicus.if.org Git - procps-ng/commitdiff
0062-ps/display.c: Always exit from signal_handler().
authorQualys Security Advisory <qsa@qualys.com>
Thu, 1 Jan 1970 00:00:00 +0000 (00:00 +0000)
committerCraig Small <csmall@enc.com.au>
Sat, 9 Jun 2018 11:45:38 +0000 (21:45 +1000)
Right now, "we _exit() anyway" is not always true: for example, the
default action for SIGURG is to ignore the signal, which means that
"kill(getpid(), signo);" does not terminate the process. Call _exit()
explicitly, in this case (rather than exit(), because the terminating
kill() calls do not call the functions registered with atexit() either).

ps/display.c

index 5cfee84b6288e6f8535885d2baa251b250b0dd55..a7eee15e0554076bc31cb30959e609f41fb08304 100644 (file)
@@ -62,6 +62,7 @@ static void signal_handler(int signo){
       error_at_line(0, 0, __FILE__, __LINE__, "%s", _("please report this bug"));
       signal(signo, SIG_DFL);  /* allow core file creation */
       kill(getpid(), signo);
+      _exit(EXIT_FAILURE);
   }
 }