summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@hadrons.org>2024-01-08 01:58:54 +0100
committerGuillem Jover <guillem@hadrons.org>2024-01-08 01:58:54 +0100
commitdd0bdb58e0e5b3b811958a1f9ccd7da6d46c9581 (patch)
tree1312293445310a7584dc3286d68e123ddf934b27
parent0813f3786f4968e4fca374fd7b74fb97a0f51f21 (diff)
test: Close all descriptors before initializing them for closefrom()
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
-rw-r--r--test/closefrom.c6
1 files changed, 6 insertions, 0 deletions
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);