From a15fc009daf64d5563f6669d72bc7946da12a03b Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Sun, 4 Dec 2011 05:41:46 +0800
Subject: [PATCH] - Initialise sa_mask properly

---
 debug.h           | 6 +++---
 svr-chansession.c | 3 ++-
 svr-main.c        | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/debug.h b/debug.h
index b20e6850..d54bc271 100644
--- a/debug.h
+++ b/debug.h
@@ -31,7 +31,7 @@
 
 /* Work well for valgrind - don't clear environment, be nicer with signals
  * etc. Don't use this normally, it might cause problems */
-/* #define DEBUG_VALGRIND */
+#define DEBUG_VALGRIND
 
 /* Define this to compile in trace debugging printf()s. 
  * You'll need to run programs with "-v" to turn this on.
@@ -39,7 +39,7 @@
  * Caution: Don't use this in an unfriendly environment (ie unfirewalled),
  * since the printing may not sanitise strings etc. This will add a reasonable
  * amount to your executable size. */
-/*#define DEBUG_TRACE */
+#define DEBUG_TRACE
 
 /* All functions writing to the cleartext payload buffer call
  * CHECKCLEARTOWRITE() before writing. This is only really useful if you're
@@ -69,7 +69,7 @@
 
 /* To debug with GDB it is easier to run with no forking of child processes.
    You will need to pass "-F" as well. */
-/* #define DEBUG_NOFORK */
+#define DEBUG_NOFORK
 
 
 /* For testing as non-root on shadowed systems, include the crypt of a password
diff --git a/svr-chansession.c b/svr-chansession.c
index 4d6d4fe0..9fd49c11 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -137,7 +137,7 @@ static void sesssigchild_handler(int UNUSED(dummy)) {
 
 	sa_chld.sa_handler = sesssigchild_handler;
 	sa_chld.sa_flags = SA_NOCLDSTOP;
-	sa_chld.sa_mask = 0;
+	sigemptyset(&sa_chld.sa_mask);
 	sigaction(SIGCHLD, &sa_chld, NULL);
 	TRACE(("leave sigchld handler"))
 }
@@ -981,6 +981,7 @@ void svr_chansessinitialise() {
 	svr_ses.lastexit.exitpid = -1; /* Nothing has exited yet */
 	sa_chld.sa_handler = sesssigchild_handler;
 	sa_chld.sa_flags = SA_NOCLDSTOP;
+	sigemptyset(&sa_chld.sa_mask);
 	if (sigaction(SIGCHLD, &sa_chld, NULL) < 0) {
 		dropbear_exit("signal() error");
 	}
diff --git a/svr-main.c b/svr-main.c
index ff3691fe..b7258e5f 100644
--- a/svr-main.c
+++ b/svr-main.c
@@ -370,7 +370,7 @@ static void commonsetup() {
 	/* catch and reap zombie children */
 	sa_chld.sa_handler = sigchld_handler;
 	sa_chld.sa_flags = SA_NOCLDSTOP;
-	sa_chld.sa_mask = 0;
+	sigemptyset(&sa_chld.sa_mask);
 	if (sigaction(SIGCHLD, &sa_chld, NULL) < 0) {
 		dropbear_exit("signal() error");
 	}
-- 
GitLab