From ac24ef84fa78cec6e1e3e3bd7ad318ae42061bd7 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Thu, 8 Jan 2026 13:27:55 -0400 Subject: [PATCH] libutil-tests: fix openFileEnsureBeneathNoSymlinks.works on cygwin --- src/libutil-tests/unix/file-descriptor.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libutil-tests/unix/file-descriptor.cc b/src/libutil-tests/unix/file-descriptor.cc index b5e3c50b4e4..e1ccca3f24a 100644 --- a/src/libutil-tests/unix/file-descriptor.cc +++ b/src/libutil-tests/unix/file-descriptor.cc @@ -64,9 +64,12 @@ TEST(openFileEnsureBeneathNoSymlinks, works) EXPECT_THROW(open("a/absolute_symlink/c/d", O_RDONLY), SymlinkNotAllowed); EXPECT_THROW(open("a/relative_symlink/c", O_RDONLY), SymlinkNotAllowed); EXPECT_THROW(open("a/b/c/d", O_RDONLY), SymlinkNotAllowed); +#ifndef __CYGWIN__ + // this returns ELOOP on cygwin when O_NOFOLLOW is used EXPECT_EQ(open("a/broken_symlink", O_CREAT | O_WRONLY | O_EXCL, 0666), INVALID_DESCRIPTOR); /* Sanity check, no symlink shenanigans and behaves the same as regular openat with O_EXCL | O_CREAT. */ EXPECT_EQ(errno, EEXIST); +#endif EXPECT_THROW(open("a/absolute_symlink/broken_symlink", O_CREAT | O_WRONLY | O_EXCL, 0666), SymlinkNotAllowed); EXPECT_EQ(open("c/d/regular/a", O_RDONLY), INVALID_DESCRIPTOR); EXPECT_EQ(open("c/d/regular", O_RDONLY | O_DIRECTORY), INVALID_DESCRIPTOR);