summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2011-12-04 05:41:46 +0800
committerMatt Johnston <matt@ucc.asn.au>2011-12-04 05:41:46 +0800
commita15fc009daf64d5563f6669d72bc7946da12a03b (patch)
tree847cb16220a193fef5cf67451074aee38b2bb2f0
parent6c4390c8486cf6927274133a771d6d3de75efd50 (diff)
- Initialise sa_mask properly
-rw-r--r--debug.h6
-rw-r--r--svr-chansession.c3
-rw-r--r--svr-main.c2
3 files changed, 6 insertions, 5 deletions
diff --git a/debug.h b/debug.h
index b20e685..d54bc27 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 4d6d4fe..9fd49c1 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 ff3691f..b7258e5 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");
}