From: Andy Pan Date: Sun, 25 Sep 2022 05:14:24 +0000 (+0800) Subject: syscall: check if to is nil to prevent panic from Sendto X-Git-Tag: go1.20rc1~943 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5036ed26bd241cb8eadf4d0f00de6b9d3449bf87;p=gostls13.git syscall: check if to is nil to prevent panic from Sendto Fixes #55845 Change-Id: If30263b7d34829c40e6606846115ec520f351f2c Reviewed-on: https://go-review.googlesource.com/c/go/+/433504 Run-TryBot: Ian Lance Taylor Auto-Submit: Ian Lance Taylor Reviewed-by: Ian Lance Taylor Run-TryBot: Andy Pan Reviewed-by: Bryan Mills TryBot-Result: Gopher Robot --- diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go index 3133becd7c..c59d4fcf95 100644 --- a/src/syscall/syscall_unix.go +++ b/src/syscall/syscall_unix.go @@ -437,11 +437,17 @@ func sendtoInet6(fd int, p []byte, flags int, to *SockaddrInet6) (err error) { } func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { - ptr, n, err := to.sockaddr() - if err != nil { - return err + var ( + ptr unsafe.Pointer + salen _Socklen + ) + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return err + } } - return sendto(fd, p, flags, ptr, n) + return sendto(fd, p, flags, ptr, salen) } func SetsockoptByte(fd, level, opt int, value byte) (err error) {