From: Tobias Klauser Date: Tue, 25 Jun 2019 12:06:14 +0000 (+0200) Subject: syscall: fix nil pointer dereference in Getdirentries on 32-bit freebsd 12 X-Git-Tag: go1.13beta1~3 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9bf62783d2fc3804fd31f68092e779ef52f26cf9;p=gostls13.git 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 --- 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