aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2026-04-09 15:23:57 +0200
committerGopher Robot <gobot@golang.org>2026-04-10 02:58:16 -0700
commit824a8a315668598436072566727cc5b28ac2f8c9 (patch)
treeffcb96328ccf303186399cc63faba7fbb3f4f267
parentff7dfb5c3b365b0f41210fe0af0c66447b13c392 (diff)
downloadgo-824a8a315668598436072566727cc5b28ac2f8c9.tar.xz
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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
-rw-r--r--src/syscall/syscall_linux_arm64.go3
-rw-r--r--src/syscall/syscall_linux_loong64.go3
-rw-r--r--src/syscall/syscall_linux_riscv64.go3
3 files changed, 9 insertions, 0 deletions
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},