From 5036ed26bd241cb8eadf4d0f00de6b9d3449bf87 Mon Sep 17 00:00:00 2001 From: Andy Pan Date: Sun, 25 Sep 2022 13:14:24 +0800 Subject: [PATCH] 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 --- src/syscall/syscall_unix.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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) { -- 2.50.0