Browse Source

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 <tobias.klauser@gmail.com>
Reviewed-by: Yuval Pavel Zholkover <paulzhol@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Tobias Klauser 6 years ago
parent
commit
d432491b91
1 changed files with 1 additions and 1 deletions
  1. 1 1
      unix/syscall_freebsd.go

+ 1 - 1
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