From: F Y Date: Tue, 17 Oct 2023 21:59:17 +0000 (+0000) Subject: syscall: stop counting trailing NUL for abstract addresses starting with NUL X-Git-Tag: go1.22rc1~540 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3de6033d0e8022dffee85bd9537f90b1a5ba5e30;p=gostls13.git syscall: stop counting trailing NUL for abstract addresses starting with NUL Changes trailing-NUL-counting behavior for abstract addresses starting with the NUL character to be the same as abstract addresses starting with the @ character. For #63579. Change-Id: I206e4d0d808396998cb7d92a9e26dda854cb1248 GitHub-Last-Rev: 0ff0a9c938a4b57cdc30b1c4f0c058108a241df8 GitHub-Pull-Request: golang/go#63580 Reviewed-on: https://go-review.googlesource.com/c/go/+/535776 LUCI-TryBot-Result: Go LUCI Auto-Submit: Ian Lance Taylor Reviewed-by: Than McIntosh Reviewed-by: Ian Lance Taylor --- diff --git a/src/syscall/syscall_linux.go b/src/syscall/syscall_linux.go index ad72a1d018..96ad4fbe3f 100644 --- a/src/syscall/syscall_linux.go +++ b/src/syscall/syscall_linux.go @@ -554,7 +554,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { if n > 0 { sl += _Socklen(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl-- diff --git a/src/syscall/syscall_solaris.go b/src/syscall/syscall_solaris.go index 243794940e..28d3727db6 100644 --- a/src/syscall/syscall_solaris.go +++ b/src/syscall/syscall_solaris.go @@ -131,7 +131,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { if n > 0 { sl += _Socklen(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl-- diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go index 8229e252d9..33876c7fe0 100644 --- a/src/syscall/syscall_windows.go +++ b/src/syscall/syscall_windows.go @@ -862,7 +862,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { if n > 0 { sl += int32(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl--