diff options
| author | Tobias Klauser <tklauser@distanz.ch> | 2018-06-20 15:41:37 +0200 |
|---|---|---|
| committer | Tobias Klauser <tobias.klauser@gmail.com> | 2018-06-21 06:47:46 +0000 |
| commit | 85e38cccb4d113862f4fd2c3c4d97927cd84420c (patch) | |
| tree | c39d71d5531a6e50a952044a422f8395419f7c89 /src/syscall/syscall_linux_test.go | |
| parent | feeff23556bc82778aab0ed80b576b953f064024 (diff) | |
| download | go-85e38cccb4d113862f4fd2c3c4d97927cd84420c.tar.xz | |
syscall: check faccessat flags parameter on Linux
Port CL 119495 from golang.org/x/sys/unix to the syscall package.
Currently Linux faccessat(2) syscall implementation doesn't support the
flags parameter. As per the discussion in #25845, permit the same flags
as glibc [1].
[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;h=ea42b2303ff4b2d2d6548ea04376fb265f773436;hb=HEAD
Updates #25845
Change-Id: I132b33275a9cc72b3a97acea5482806c7f47d7f7
Reviewed-on: https://go-review.googlesource.com/120015
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/syscall/syscall_linux_test.go')
| -rw-r--r-- | src/syscall/syscall_linux_test.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/syscall/syscall_linux_test.go b/src/syscall/syscall_linux_test.go index 4490fc24ca..24158bb8b8 100644 --- a/src/syscall/syscall_linux_test.go +++ b/src/syscall/syscall_linux_test.go @@ -56,8 +56,39 @@ func touch(t *testing.T, name string) { const ( _AT_SYMLINK_NOFOLLOW = 0x100 _AT_FDCWD = -0x64 + _AT_EACCESS = 0x200 ) +func TestFaccessat(t *testing.T) { + defer chtmpdir(t)() + touch(t, "file1") + + err := syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, 0) + if err != nil { + t.Errorf("Faccessat: unexpected error: %v", err) + } + + err = syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, 2) + if err != syscall.EINVAL { + t.Errorf("Faccessat: unexpected error: %v, want EINVAL", err) + } + + err = syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, _AT_EACCESS) + if err != syscall.EOPNOTSUPP { + t.Errorf("Faccessat: unexpected error: %v, want EOPNOTSUPP", err) + } + + err = os.Symlink("file1", "symlink1") + if err != nil { + t.Fatal(err) + } + + err = syscall.Faccessat(_AT_FDCWD, "symlink1", syscall.O_RDONLY, _AT_SYMLINK_NOFOLLOW) + if err != syscall.EOPNOTSUPP { + t.Errorf("Faccessat: unexpected error: %v, want EOPNOTSUPP", err) + } +} + func TestFchmodat(t *testing.T) { defer chtmpdir(t)() |
