From 13c082601db45c25fc85f4cdac9cc3bab7c4329f Mon Sep 17 00:00:00 2001 From: database64128 Date: Sat, 2 Aug 2025 00:40:36 +0800 Subject: [PATCH] internal/poll: permit nil destination address in WriteMsg{Inet4,Inet6} For #74841 Change-Id: If2ea23b1eb23e32680bd576f54a0020d7e115797 Reviewed-on: https://go-review.googlesource.com/c/go/+/692436 LUCI-TryBot-Result: Go LUCI Reviewed-by: Carlos Amedee Reviewed-by: Damien Neil --- src/internal/poll/fd_windows.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/internal/poll/fd_windows.go b/src/internal/poll/fd_windows.go index ebb2abcbf8..5d6d78d8bb 100644 --- a/src/internal/poll/fd_windows.go +++ b/src/internal/poll/fd_windows.go @@ -1422,10 +1422,13 @@ func (fd *FD) WriteMsgInet4(p []byte, oob []byte, sa *syscall.SockaddrInet4) (in if o.rsa == nil { o.rsa = new(syscall.RawSockaddrAny) } - len := sockaddrInet4ToRaw(o.rsa, sa) + var nameLen int32 + if sa != nil { + nameLen = sockaddrInet4ToRaw(o.rsa, sa) + } msg := newWSAMsg(p, oob, 0) msg.Name = (syscall.Pointer)(unsafe.Pointer(o.rsa)) - msg.Namelen = len + msg.Namelen = nameLen n, err := fd.execIO(o, func(o *operation) (qty uint32, err error) { err = windows.WSASendMsg(fd.Sysfd, &msg, 0, nil, &o.o, nil) return qty, err @@ -1449,9 +1452,12 @@ func (fd *FD) WriteMsgInet6(p []byte, oob []byte, sa *syscall.SockaddrInet6) (in o.rsa = new(syscall.RawSockaddrAny) } msg := newWSAMsg(p, oob, 0) - len := sockaddrInet6ToRaw(o.rsa, sa) + var nameLen int32 + if sa != nil { + nameLen = sockaddrInet6ToRaw(o.rsa, sa) + } msg.Name = (syscall.Pointer)(unsafe.Pointer(o.rsa)) - msg.Namelen = len + msg.Namelen = nameLen n, err := fd.execIO(o, func(o *operation) (qty uint32, err error) { err = windows.WSASendMsg(fd.Sysfd, &msg, 0, nil, &o.o, nil) return qty, err -- 2.52.0