]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: return early on error in Recvmsg
authorTobias Klauser <tklauser@distanz.ch>
Sat, 10 Jan 2026 14:56:01 +0000 (15:56 +0100)
committerGopher Robot <gobot@golang.org>
Thu, 22 Jan 2026 20:40:23 +0000 (12:40 -0800)
Currently, Recvmsg may access the rsa buffer even if the underlying syscall
returns an error.

Following the same change done for x/sys/unix.Recvmsg in CL 734740.

For golang/go#76848

Change-Id: I2a145d822442a2033a76f4717317a39010b17bd5
Reviewed-on: https://go-review.googlesource.com/c/go/+/735121
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Florian Lehner <lehner.florian86@gmail.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
src/syscall/syscall_unix.go

index d957b77dc41f7640bbd8bfe7f06a863587c4f1f2..60173f6d16305124eb3227b9b928f656236d67d1 100644 (file)
@@ -385,6 +385,9 @@ func recvmsgInet6(fd int, p, oob []byte, flags int, from *SockaddrInet6) (n, oob
 func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
        var rsa RawSockaddrAny
        n, oobn, recvflags, err = recvmsgRaw(fd, p, oob, flags, &rsa)
+       if err != nil {
+               return
+       }
        // source address is only specified if the socket is unconnected
        if rsa.Addr.Family != AF_UNSPEC {
                from, err = anyToSockaddr(&rsa)