From c606ff45a0cab8f08a0b06df17737ec309cf4170 Mon Sep 17 00:00:00 2001 From: Remi Tricot-Le Breton Date: Tue, 28 Oct 2025 18:00:42 +0100 Subject: [PATCH] BUG/MINOR: init: Do not close previously created fd in stdio_quiet During init we were calling 'stdio_quiet' and passing the previously created 'devnullfd' file descriptor. But the 'stdio_quiet' was also closed afterwards which raised an error (EBADF). If we keep from closing FDs that were opened outside of the 'stdio_quiet' function we will let the caller manage its FD and avoid double close calls. This patch can be backported to all stable branches. --- src/haproxy.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/haproxy.c b/src/haproxy.c index 8127f0e04..1a43ae6e0 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -893,8 +893,11 @@ static void dump(struct sig_handler *sh) */ void stdio_quiet(int fd) { - if (fd < 0) + int close_fd = 0; + if (fd < 0) { fd = open("/dev/null", O_RDWR, 0); + close_fd = 1; + } if (fd > -1) { fclose(stdin); @@ -904,7 +907,7 @@ void stdio_quiet(int fd) dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); - if (fd > 2) + if (fd > 2 && close_fd) close(fd); return; } -- 2.47.3