From 94a1aac0916108152fc97f5cf94e7095ac7fcbbd Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 28 Aug 2009 11:05:12 -0400 Subject: [PATCH] Solaris: Don't crash when signal handler is called with siginfo_t=NULL. --HG-- branch : HEAD --- src/lib/lib-signals.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/lib-signals.c b/src/lib/lib-signals.c index 9621b2aad5..fe13c170b3 100644 --- a/src/lib/lib-signals.c +++ b/src/lib/lib-signals.c @@ -34,6 +34,10 @@ const char *lib_signal_code_to_str(int signo, int sicode) { /* common */ switch (sicode) { +#ifdef SI_NOINFO + case SI_NOINFO: + return ""; +#endif case SI_USER: return "kill"; #ifdef SI_KERNEL @@ -75,6 +79,18 @@ static void sig_handler(int signo, siginfo_t *si, void *context ATTR_UNUSED) struct signal_handler *h; char c = 0; +#ifdef SI_NOINFO + siginfo_t tmp_si; + + if (si == NULL) { + /* Solaris can leave this to NULL */ + memset(&tmp_si, 0, sizeof(tmp_si)); + tmp_si.si_signo = signo; + tmp_si.si_code = SI_NOINFO; + si = &tmp_si; + } +#endif + if (signo < 0 || signo > MAX_SIGNAL_VALUE) return; -- 2.47.3