From 2eb05547c95e390ecab9f047beb7c4098f656ff2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 11 Apr 2010 18:37:52 +0300 Subject: [PATCH] Log dangerous registration of signal handlers --- bin/override.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/bin/override.c b/bin/override.c index 2f7606ba56..1eabda0135 100644 --- a/bin/override.c +++ b/bin/override.c @@ -147,4 +147,30 @@ int rand (void) } +/** Signals **/ +#include + +void (*signal (int signum, void (*handler) (int))) (int) +{ + if (override) + { + const char *msg = "Error"; + + if ((signum == SIGPIPE && handler == SIG_IGN) + || (signum != SIGPIPE && handler == SIG_DFL)) + /* Same settings we already use */ + msg = "Warning"; + LOG(msg, "%d, %p", signum, handler); + } + return CALL(signal, signum, handler); +} + +int sigaction (int signum, const struct sigaction *act, struct sigaction *old) +{ + if (act != NULL) + LOG("Error", "%d, %p, %p", signum, act, old); + return CALL(sigaction, signum, act, old); +} + + #endif /* __ELF__ */ -- 2.39.2