changeset 9340:cc4af8e31175 HEAD

Solaris: Don't crash when signal handler is called with siginfo_t=NULL.
author Timo Sirainen <tss@iki.fi>
date Fri, 28 Aug 2009 11:04:53 -0400
parents 355d5a40f7a7
children ff4c1e9f47a4
files src/lib/lib-signals.c
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/lib-signals.c	Tue Aug 25 09:30:11 2009 -0400
+++ b/src/lib/lib-signals.c	Fri Aug 28 11:04:53 2009 -0400
@@ -34,6 +34,10 @@
 {
 	/* common */
 	switch (sicode) {
+#ifdef SI_NOINFO
+	case SI_NOINFO:
+		return "";
+#endif
 	case SI_USER:
 		return "kill";
 #ifdef SI_KERNEL
@@ -75,6 +79,18 @@
 	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;