diff options
| author | Jakob Unterwurzacher | 2026-02-07 21:19:14 +0100 |
|---|---|---|
| committer | Jakob Unterwurzacher | 2026-02-09 21:20:13 +0100 |
| commit | d22d6b3c69f95ed0034af04851807e7125811b87 (patch) | |
| tree | ffd5322cfdace5c633a0362338cbb3ff695f48b4 /internal/syscallcompat/sys_darwin.go | |
| parent | ac59b820ff06835dbcb502ffbed114b554804988 (diff) | |
darwin: syscallcompat: Openat: use O_SYMLINK
Also add tests that opening a symlink (using unix.O_PATH | unix.O_NOFOLLOW)
works.
https://github.com/rfjakob/gocryptfs/issues/993
Diffstat (limited to 'internal/syscallcompat/sys_darwin.go')
| -rw-r--r-- | internal/syscallcompat/sys_darwin.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/syscallcompat/sys_darwin.go b/internal/syscallcompat/sys_darwin.go index 0ebdd3b..ef19f24 100644 --- a/internal/syscallcompat/sys_darwin.go +++ b/internal/syscallcompat/sys_darwin.go @@ -27,6 +27,10 @@ const ( // Only exists on Linux. Define here to fix build failure, even though // we will never see this flag. RENAME_WHITEOUT = 1 << 30 + + // On Darwin we use O_SYMLINK which allows opening a symlink itself. + // On Linux, we only have O_NOFOLLOW. + OpenatFlagNofollowSymlink = unix.O_SYMLINK ) // Unfortunately fsetattrlist does not have a syscall wrapper yet. |
