From f4734fb615e269af498d4c24ba402c2deba4730b Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 6 Jan 2014 10:58:11 -0800 Subject: [PATCH] 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(). --- keyd.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) 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; } -- 2.39.2