main: open /dev/null as stdin/out/err in daemonization

chronyd doesn't normally write anything to stdout or stderr when running
as a daemon, but it is a good practice to replace them with descriptors
of /dev/null to prevent accidental writes to other files or sockets that
would otherwise take their place.
This commit is contained in:
Miroslav Lichvar 2018-02-21 12:50:14 +01:00
parent 7b98443a13
commit da862158bf

9
main.c
View file

@ -292,6 +292,8 @@ write_pidfile(void)
/* ================================================== */
#define DEV_NULL "/dev/null"
static void
go_daemon(void)
{
@ -352,6 +354,13 @@ go_daemon(void)
}
LOG_SetParentFd(pipefd[1]);
/* Open /dev/null as new stdin/out/err */
errno = 0;
if (open(DEV_NULL, O_RDONLY) != STDIN_FILENO ||
open(DEV_NULL, O_WRONLY) != STDOUT_FILENO ||
open(DEV_NULL, O_RDWR) != STDERR_FILENO)
LOG_FATAL("Could not open %s : %s", DEV_NULL, strerror(errno));
}
}
}