From: Jonathan McDowell Date: Mon, 6 Jan 2014 18:58:11 +0000 (-0800) Subject: Add error checking when trying to daemonize in keyd X-Git-Tag: onak-0.4.3~16 X-Git-Url: http://the.earth.li/gitweb/?p=onak.git;a=commitdiff_plain;h=f4734fb615e269af498d4c24ba402c2deba4730b Add error checking when trying to daemonize in keyd We weren't checking the return from freopen, which causes warnings when compiling with -D_FORTIFY_SOURCE=2. Do so, and also for the setsid(). --- diff --git a/keyd.c b/keyd.c index b8b8ad3..8b61d0c 100644 --- a/keyd.c +++ b/keyd.c @@ -65,11 +65,35 @@ void daemonize(void) exit(EXIT_SUCCESS); } - setsid(); + if (setsid() == -1) { + logthing(LOGTHING_CRITICAL, + "Couldn't set process group leader: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } - freopen("/dev/null", "r", stdin); - freopen("/dev/null", "w", stdout); - freopen("/dev/null", "w", stderr); + if (!freopen("/dev/null", "r", stdin)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stdin to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } + if (!freopen("/dev/null", "w", stdout)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stdout to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } + if (!freopen("/dev/null", "w", stderr)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stderr to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } return; }