aboutsummaryrefslogtreecommitdiff
path: root/src/syscall
diff options
context:
space:
mode:
authorAndy Pan <panjf2000@gmail.com>2022-09-25 13:14:24 +0800
committerGopher Robot <gobot@golang.org>2022-09-26 14:30:17 +0000
commit5036ed26bd241cb8eadf4d0f00de6b9d3449bf87 (patch)
treeededc56d344b3147f7d87196abc725a60c81d96b /src/syscall
parent1e91ffc897efb1ed298753c08f086fbc8f725025 (diff)
downloadgo-5036ed26bd241cb8eadf4d0f00de6b9d3449bf87.tar.xz
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 <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Andy Pan <panjf2000@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/syscall')
-rw-r--r--src/syscall/syscall_unix.go14
1 files 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) {