aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2019-06-25 14:06:14 +0200
committerTobias Klauser <tobias.klauser@gmail.com>2019-06-26 06:27:56 +0000
commit9bf62783d2fc3804fd31f68092e779ef52f26cf9 (patch)
treef51c3d95a1d81816dba82e918ec3de2e93060059
parentadf888376deb749bc95a2717989eb0f2db001f8d (diff)
downloadgo-9bf62783d2fc3804fd31f68092e779ef52f26cf9.tar.gz
go-9bf62783d2fc3804fd31f68092e779ef52f26cf9.zip
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 <iant@golang.org>
-rw-r--r--src/syscall/syscall_freebsd.go2
1 files changed, 1 insertions, 1 deletions
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