summaryrefslogtreecommitdiff
path: root/signal.c
diff options
context:
space:
mode:
authorToby Goodwin <toby@paccrat.org>2016-08-25 22:09:42 +0100
committerToby Goodwin <toby@paccrat.org>2016-08-25 22:09:42 +0100
commitcc11e3c80f687fb98dcbcd2249731f999ddb9189 (patch)
tree86a0950b038bab71422b25eef7ec27f11b37533b /signal.c
parent2ab8e78dfa862d4a378f766548442c24efa516cc (diff)
do not return random value if sigaction fails (thanks @borkovic)
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/signal.c b/signal.c
index 037be1d..68dcc27 100644
--- a/signal.c
+++ b/signal.c
@@ -15,8 +15,9 @@ void (*sys_signal(int signum, void (*handler)(int)))(int) {
new.sa_handler = handler;
new.sa_flags = 0; /* clear SA_RESTART */
sigfillset(&new.sa_mask);
- sigaction(signum, &new, &old);
- return old.sa_handler;
+ if (sigaction(signum, &new, &old) == 0)
+ return old.sa_handler;
+ return SIG_DFL;
}
#else
void (*sys_signal(int signum, void (*handler)(int)))(int) {