diff options
| author | Tobias Klauser <tklauser@distanz.ch> | 2026-01-10 15:56:01 +0100 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2026-01-22 12:40:23 -0800 |
| commit | 1996c22f0a58a32f5f415e1a6c84bcb305f04c36 (patch) | |
| tree | cc2a1a81f71fe36373c575d25005c379662f5a65 /src/syscall | |
| parent | c61a48619ff2d26543d0f4874ab495bbbfdc701f (diff) | |
| download | go-1996c22f0a58a32f5f415e1a6c84bcb305f04c36.tar.xz | |
syscall: return early on error in Recvmsg
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>
Diffstat (limited to 'src/syscall')
| -rw-r--r-- | src/syscall/syscall_unix.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go index d957b77dc4..60173f6d16 100644 --- a/src/syscall/syscall_unix.go +++ b/src/syscall/syscall_unix.go @@ -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) |
