From d432491b91382bba9c2a91776aa47c9430183a6f Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Fri, 21 Jun 2019 20:49:16 +0200 Subject: [PATCH] unix: 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. Change-Id: I043a9ee9262e6333c35fd9ecc52694c8fd2de9f6 Reviewed-on: https://go-review.googlesource.com/c/sys/+/183223 Run-TryBot: Tobias Klauser Reviewed-by: Yuval Pavel Zholkover Reviewed-by: Ian Lance Taylor TryBot-Result: Gobot Gobot --- unix/syscall_freebsd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/syscall_freebsd.go b/unix/syscall_freebsd.go index c0dbbc60..c9c802df 100644 --- a/unix/syscall_freebsd.go +++ b/unix/syscall_freebsd.go @@ -362,7 +362,7 @@ func Getdents(fd int, buf []byte) (n int, 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