]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: check if to is nil to prevent panic from Sendto
authorAndy Pan <panjf2000@gmail.com>
Sun, 25 Sep 2022 05:14:24 +0000 (13:14 +0800)
committerGopher Robot <gobot@golang.org>
Mon, 26 Sep 2022 14:30:17 +0000 (14:30 +0000)
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>

src/syscall/syscall_unix.go

index 3133becd7ca52008e0bb4cee6f029daca1ca7563..c59d4fcf958aa54f417479bd1f2c6a5047dece9b 100644 (file)
@@ -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) {