diff options
| author | tjg <tjg> | 1999-12-10 10:50:41 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:23:17 +0100 |
| commit | 449420e7e294e11aff835f638481fd7608778bc1 (patch) | |
| tree | 3b2e92fe620106ec90e774d1fe569dc36b944d41 /signal.c | |
| parent | 09cad2440e9990cde808747f640c368124c17328 (diff) | |
Bug: avoid a putative race condition in signal.c
Diffstat (limited to 'signal.c')
| -rw-r--r-- | signal.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -85,19 +85,19 @@ extern void initsignal() { void (*h)(int); int i; - for (i = 1; i < NUMOFSIGNALS; i++) { - h = sys_signal(i, SIG_DFL); - if (h != SIG_DFL && h != SIG_ERR) - sys_signal(i, h); - sighandlers[i] = h; - } - #if HAVE_SYSV_SIGCLD /* Ensure that SIGCLD is not SIG_IGN. Solaris's rshd does this. :-( */ - h = sys_signal(SIGCLD, SIG_DFL); + h = sys_signal(SIGCLD, SIG_IGN); if (h != SIG_IGN && h != SIG_ERR) sys_signal(SIGCLD, h); else - sighandlers[SIGCLD] = SIG_DFL; + sys_signal(SIGCLD, SIG_DFL); #endif + + for (i = 1; i < NUMOFSIGNALS; i++) { + h = sys_signal(i, SIG_IGN); + if (h != SIG_IGN && h != SIG_ERR) + sys_signal(i, h); + sighandlers[i] = h; + } } |