Skip to content

Commit 4e121b1

Browse files
Bryan C. Millsgopherbot
authored andcommitted
unix: add missing address operator in initxattrdest
The purpose of the _zero variable is to provide a valid address for a pointer to an array of length zero. All other uses of the variable take its address, but one reference to it (added in CL 147850043) converts the variable (which has type uintptr) directly to an unsafe.Pointer, producing a nil pointer instead of a non-nil pointer to a zero-length array. This typo is caught by 'go vet', but was masked for a long time by the numerous false-positive warnings for the same check (#41205). For golang/go#41205. Change-Id: Ib3bebfadc6fc5574db19630169ff3f65da857bdd Reviewed-on: https://go-review.googlesource.com/c/sys/+/465597 Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Auto-Submit: Bryan Mills <bcmills@google.com>
1 parent 68f9dcb commit 4e121b1

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

unix/xattr_bsd.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,14 @@ func xattrnamespace(fullattr string) (ns int, attr string, err error) {
3636
func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
3737
if len(dest) > idx {
3838
return unsafe.Pointer(&dest[idx])
39-
} else {
40-
return unsafe.Pointer(_zero)
4139
}
40+
if dest != nil {
41+
// extattr_get_file and extattr_list_file treat NULL differently from
42+
// a non-NULL pointer of length zero. Preserve the property of nilness,
43+
// even if we can't use dest directly.
44+
return unsafe.Pointer(&_zero)
45+
}
46+
return nil
4247
}
4348

4449
// FreeBSD and NetBSD implement their own syscalls to handle extended attributes

0 commit comments

Comments
 (0)