* job.c (set_child_handler_action_flags): [SV 41341]

Ensure signal handler is in place before alarm(1).
This commit is contained in:
Paul Smith 2014-02-01 23:08:59 -05:00
parent a7cac0f0e3
commit 88713683fe

18
job.c
View file

@ -1116,10 +1116,20 @@ set_child_handler_action_flags (int set_handler, int set_alarm)
/* If we're about to enter the read(), set an alarm to wake up in a /* If we're about to enter the read(), set an alarm to wake up in a
second so we can check if the load has dropped and we can start more second so we can check if the load has dropped and we can start more
work. On the way out, turn off the alarm and set SIG_DFL. */ work. On the way out, turn off the alarm and set SIG_DFL. */
alarm (set_handler ? 1 : 0); if (set_handler)
sa.sa_handler = set_handler ? job_noop : SIG_DFL; {
sa.sa_flags = 0; sa.sa_handler = job_noop;
sigaction (SIGALRM, &sa, NULL); sa.sa_flags = 0;
sigaction (SIGALRM, &sa, NULL);
alarm (1);
}
else
{
alarm (0);
sa.sa_handler = SIG_DFL;
sa.sa_flags = 0;
sigaction (SIGALRM, &sa, NULL);
}
} }
#endif #endif
} }