]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: check correct group in Faccessat
authorDamien Neil <dneil@google.com>
Tue, 12 Apr 2022 20:38:17 +0000 (13:38 -0700)
committerDamien Neil <dneil@google.com>
Tue, 12 Apr 2022 21:12:19 +0000 (21:12 +0000)
The Faccessat call checks the user, group, or other permission bits of a
file to see if the calling process can access it. The test to see if the
group permissions should be used was made with the wrong group id, using
the process's group id rather than the file's group id. Fix this to use
the correct group id.

No test since we cannot easily change file permissions when not running
as root and the test is meaningless if running as root.

For #52313

Change-Id: I4e2c84754b0af7830b40fd15dedcbc58374d75ee
Reviewed-on: https://go-review.googlesource.com/c/go/+/399539
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/syscall/syscall_linux.go

index a00d8c94a26b63c8132c92e754e14117eac297d9..74322caea12b95afe80f12c1e191e6f75d69522c 100644 (file)
@@ -109,7 +109,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
                        gid = Getgid()
                }
 
-               if uint32(gid) == st.Gid || isGroupMember(gid) {
+               if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {
                        fmode = (st.Mode >> 3) & 7
                } else {
                        fmode = st.Mode & 7