From: Miroslav Lichvar Date: Thu, 28 Nov 2024 13:35:58 +0000 (+0100) Subject: main: close pipe in grandparent process X-Git-Tag: 4.7-pre1~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26fef1751ad3d67c6701ae4f5ce1a4b2cdffb494;p=thirdparty%2Fchrony.git main: close pipe in grandparent process Close the other end of the pipe in the grandparent process before exit to avoid valgrind error. Also, in the daemon process avoid closing the pipe for second time in the 0-1024 close() loop to avoid another error. --- diff --git a/main.c b/main.c index 88ada202..864dec2d 100644 --- a/main.c +++ b/main.c @@ -339,8 +339,11 @@ go_daemon(void) /* Don't exit before the 'parent' */ waitpid(pid, NULL, 0); - close(pipefd[1]); r = read(pipefd[0], message, sizeof (message)); + + close(pipefd[0]); + close(pipefd[1]); + if (r != 1 || message[0] != '\0') { if (r > 1) { /* Print the error message from the child */ @@ -351,8 +354,6 @@ go_daemon(void) } else exit(0); } else { - close(pipefd[0]); - setsid(); /* Do 2nd fork, as-per recommended practice for launching daemons. */ @@ -362,6 +363,7 @@ go_daemon(void) LOG_FATAL("fork() failed : %s", strerror(errno)); } else if (pid > 0) { /* In the 'parent' */ + close(pipefd[0]); close(pipefd[1]); exit(0); } else {