From 824a8a315668598436072566727cc5b28ac2f8c9 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Thu, 9 Apr 2026 15:23:57 +0200 Subject: syscall: avoid nil pointer dereference in Utime Passing a nil buf *Utimbuf to Utime on linux/{arm64,loong64,riscv64} will cause a nil pointer dereference. Check buf explicitly to avoid this case. Change-Id: Ic93484e95e10f92b8266aa598de82ad35fab17d8 Reviewed-on: https://go-review.googlesource.com/c/go/+/764580 LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov Reviewed-by: Ian Lance Taylor Reviewed-by: David Chase Auto-Submit: Tobias Klauser --- src/syscall/syscall_linux_arm64.go | 3 +++ src/syscall/syscall_linux_loong64.go | 3 +++ src/syscall/syscall_linux_riscv64.go | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/syscall/syscall_linux_arm64.go b/src/syscall/syscall_linux_arm64.go index fb0ecd77b7..182d2cfb6e 100644 --- a/src/syscall/syscall_linux_arm64.go +++ b/src/syscall/syscall_linux_arm64.go @@ -119,6 +119,9 @@ func Time(t *Time_t) (Time_t, error) { } func Utime(path string, buf *Utimbuf) error { + if buf == nil { + return Utimes(path, nil) + } tv := []Timeval{ {Sec: buf.Actime}, {Sec: buf.Modtime}, diff --git a/src/syscall/syscall_linux_loong64.go b/src/syscall/syscall_linux_loong64.go index 360590d2d7..ab501fab7d 100644 --- a/src/syscall/syscall_linux_loong64.go +++ b/src/syscall/syscall_linux_loong64.go @@ -164,6 +164,9 @@ func Time(t *Time_t) (Time_t, error) { } func Utime(path string, buf *Utimbuf) error { + if buf == nil { + return Utimes(path, nil) + } tv := []Timeval{ {Sec: buf.Actime}, {Sec: buf.Modtime}, diff --git a/src/syscall/syscall_linux_riscv64.go b/src/syscall/syscall_linux_riscv64.go index c9159762d8..d576a0f31f 100644 --- a/src/syscall/syscall_linux_riscv64.go +++ b/src/syscall/syscall_linux_riscv64.go @@ -123,6 +123,9 @@ func Time(t *Time_t) (Time_t, error) { } func Utime(path string, buf *Utimbuf) error { + if buf == nil { + return Utimes(path, nil) + } tv := []Timeval{ {Sec: buf.Actime}, {Sec: buf.Modtime}, -- cgit v1.3