[PATCH] Save errno in signal handler
Erik Ahlén
erik.ahlen at avaloninnovation.com
Thu Jan 23 22:18:51 WST 2014
# HG changeset patch
# User Erik Ahlén <erik.ahlen at avaloninnovation.com>
# Date 1390486572 -3600
# Node ID ea7299f800ce161f93ee8ad684a340c643620f26
# Parent dd0bd9231fc2444d1bd0113ebeab1129a48045a8
Save errno in child signal handler as it can interfere with select.
diff -r dd0bd9231fc2 -r ea7299f800ce svr-main.c
--- a/svr-main.c Fri Jan 17 21:42:32 2014 +0800
+++ b/svr-main.c Thu Jan 23 15:16:12 2014 +0100
@@ -336,6 +336,7 @@
/* catch + reap zombie children */
static void sigchld_handler(int UNUSED(unused)) {
struct sigaction sa_chld;
+ int old_errno = errno;
while(waitpid(-1, NULL, WNOHANG) > 0);
@@ -344,6 +345,8 @@
if (sigaction(SIGCHLD, &sa_chld, NULL) < 0) {
dropbear_exit("signal() error");
}
+
+ errno = old_errno;
}
/* catch any segvs */
More information about the Dropbear
mailing list