]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.24] os: fix Root.Mkdir permission bits on OpenBSD
authorJosh Rickmar <jrick@zettaport.com>
Thu, 1 May 2025 15:09:40 +0000 (15:09 +0000)
committerMichael Knyszek <mknyszek@google.com>
Mon, 12 May 2025 13:46:12 +0000 (06:46 -0700)
Pass missing mode bits in the mkdirat() syscall wrapper.

For #73559
Fixes #73570

Change-Id: I54b1985bd77b1fe5d1a48acab9f2597f8c931854
GitHub-Last-Rev: 669c17361d86bc9065bb6b47a2d60aa86bcfa12d
GitHub-Pull-Request: golang/go#73565
Reviewed-on: https://go-review.googlesource.com/c/go/+/669375
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
(cherry picked from commit f0a9ed7dd89f35c187830742402cfebba9d6d33a)
Reviewed-on: https://go-review.googlesource.com/c/go/+/669397
Reviewed-by: Joel Sing <joel@sing.id.au>
src/internal/syscall/unix/at_openbsd.go
src/os/root_test.go

index 69463e00b94be9dc387ada416469284611d61948..8ff383c8c71fc2e77c8aa53a51d73dfbdf54b945 100644 (file)
@@ -43,7 +43,7 @@ func Mkdirat(dirfd int, path string, mode uint32) error {
        if err != nil {
                return err
        }
-       _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(p)), 0, 0, 0, 0)
+       _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(p)), uintptr(mode), 0, 0, 0)
        if errno != 0 {
                return errno
        }
index 398909f8c674f04bcdd79402e6a89b7b4eac76d7..908d59896d26b91ae778970d0807bb2c9fa30fc1 100644 (file)
@@ -447,6 +447,12 @@ func TestRootMkdir(t *testing.T) {
                        if !fi.IsDir() {
                                t.Fatalf(`stat file created with Root.Mkdir(%q): not a directory`, test.open)
                        }
+                       if mode := fi.Mode(); mode&0o777 == 0 {
+                               // Issue #73559: We're not going to worry about the exact
+                               // mode bits (which will have been modified by umask),
+                               // but there should be mode bits.
+                               t.Fatalf(`stat file created with Root.Mkdir(%q): mode=%v, want non-zero`, test.open, mode)
+                       }
                })
        }
 }