From: Brad Fitzpatrick Date: Fri, 15 Feb 2019 18:55:45 +0000 (+0000) Subject: [release-branch.go1.12] syscall: skip TestSyscallNoError when temp dir is mounted... X-Git-Tag: go1.12~12 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a4aee30cb4ff03de514873a8f054315870663920;p=gostls13.git [release-branch.go1.12] syscall: skip TestSyscallNoError when temp dir is mounted nosuid Fixes #30258 Change-Id: I73b63eb9d3aca00f562fdc3af010e96269bb6b9c Reviewed-on: https://go-review.googlesource.com/c/162891 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Katie Hockman (cherry picked from commit 5fcc24074f8e48cd8404bd250c2c268aca2bc3d2) Reviewed-on: https://go-review.googlesource.com/c/162818 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- diff --git a/src/syscall/syscall_linux_test.go b/src/syscall/syscall_linux_test.go index 293549a841..8a578639bd 100644 --- a/src/syscall/syscall_linux_test.go +++ b/src/syscall/syscall_linux_test.go @@ -360,10 +360,23 @@ func TestSyscallNoError(t *testing.T) { strconv.FormatUint(uint64(-uid), 10) + " / " + strconv.FormatUint(uint64(uid), 10) if got != want { + if filesystemIsNoSUID(tmpBinary) { + t.Skip("skipping test when temp dir is mounted nosuid") + } t.Errorf("expected %s, got %s", want, got) } } +// filesystemIsNoSUID reports whether the filesystem for the given +// path is mounted nosuid. +func filesystemIsNoSUID(path string) bool { + var st syscall.Statfs_t + if syscall.Statfs(path, &st) != nil { + return false + } + return st.Flags&syscall.MS_NOSUID != 0 +} + func syscallNoError() { // Test that the return value from SYS_GETEUID32 (which cannot fail) // doesn't get treated as an error (see https://golang.org/issue/22924)