From dd0bdb58e0e5b3b811958a1f9ccd7da6d46c9581 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Mon, 8 Jan 2024 01:58:54 +0100 Subject: [PATCH] test: Close all descriptors before initializing them for closefrom() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On macOS, closefrom() only sets the close-on-exec flag, so we cannot check whether all file descriptors were closed, which means that if on entry our file descriptor table was filled after the 4th file descriptor, then we might fail the assertions for the flags for odd file descriptors which we expect to be closed. This can easily happen when running the test suite in parallel mode with «make -j8 check» for example. Closes: #23 --- test/closefrom.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/closefrom.c b/test/closefrom.c index 474c69f..f9d74cc 100644 --- a/test/closefrom.c +++ b/test/closefrom.c @@ -40,6 +40,12 @@ main(int argc, char *argv[]) fd = open("/dev/null", O_RDONLY); fd_max = 1024; + + /* First make sure we have a clean fd list. */ + for (i = 4; i < fd_max; i++) + close(i); + + /* Then initialize each even fd. */ for (i = 4; i < fd_max; i *= 2) { int fd_new = dup2(fd, i);