]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Solaris: Don't crash when signal handler is called with siginfo_t=NULL.
authorTimo Sirainen <tss@iki.fi>
Fri, 28 Aug 2009 15:05:12 +0000 (11:05 -0400)
committerTimo Sirainen <tss@iki.fi>
Fri, 28 Aug 2009 15:05:12 +0000 (11:05 -0400)
--HG--
branch : HEAD

src/lib/lib-signals.c

index 9621b2aad568b928785ad3ede335e7c9bb28752e..fe13c170b3fd2489542815be14902c2f07587502 100644 (file)
@@ -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;