From 9bf62783d2fc3804fd31f68092e779ef52f26cf9 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 25 Jun 2019 14:06:14 +0200 Subject: [PATCH] syscall: fix nil pointer dereference in Getdirentries on 32-bit freebsd 12 Don't attempt to dereference basep if it's nil, just pass it to getdirentries_freebsd12 as is. Ported from x/sys/unix CL 183223 Change-Id: Id1c4e0eb6ff36dd39524da8194fed9a5957bce61 Reviewed-on: https://go-review.googlesource.com/c/go/+/183797 Reviewed-by: Ian Lance Taylor --- src/syscall/syscall_freebsd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/syscall/syscall_freebsd.go b/src/syscall/syscall_freebsd.go index eecae8de30..eb7208f5cc 100644 --- a/src/syscall/syscall_freebsd.go +++ b/src/syscall/syscall_freebsd.go @@ -267,7 +267,7 @@ func Fstatfs(fd int, st *Statfs_t) (err error) { func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { if supportsABI(_ino64First) { - if unsafe.Sizeof(*basep) == 8 { + if basep == nil || unsafe.Sizeof(*basep) == 8 { return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) } // The freebsd12 syscall needs a 64-bit base. On 32-bit machines -- 2.50.0