From 4a56895165189ba3322e87de2830c3ce3e4c1721 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Wed, 21 Dec 2016 16:23:29 +1000 Subject: [PATCH] * fix freopen() calls : std{in,out,err} may be read-only --- src/daemon.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/daemon.c b/src/daemon.c index 47ae098..397a2e9 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -232,11 +232,14 @@ int main(int argc, char *argv[]) { perror("child: setuid()/setgid() failed"); exit(EXIT_FAILURE); } - if (chdir("/") != 0 || - (stdin = freopen("/dev/null", "r", stdin)) == NULL || - (stdout = freopen("/dev/null", "w", stdout)) == NULL || - (stderr = freopen("/dev/null", "w", stderr)) == NULL) { - perror("child: freopen() failed"); + if (chdir("/") != 0) { + perror("child: chdir('/') failed"); + exit(EXIT_FAILURE); + } + if (freopen("/dev/null", "r", stdin) == NULL || + freopen("/dev/null", "w", stdout) == NULL || + freopen("/dev/null", "w", stderr) == NULL) { + perror("child: freopen() on std streams failed"); exit(EXIT_FAILURE); } }