]> Cypherpunks repositories - gostls13.git/commitdiff
net: don't ignore getsockname errors in newFileFD
authorqmuntal <quimmuntal@gmail.com>
Thu, 8 Jan 2026 14:44:51 +0000 (15:44 +0100)
committerQuim Muntal <quimmuntal@gmail.com>
Mon, 12 Jan 2026 19:53:04 +0000 (11:53 -0800)
newFileFD is called when creating a net FD from an existing socket
handle. That socket might not be bound yet, in which case getsockname
returns a useful error that is currently ignored and replaced with a
potentially misleading EPROTONOSUPPORT error later on.

Updates #73696
Updates #74976
Updates #75282
Updates #75279
Updates #76537
Updates #76582
Updates #77038

Change-Id: I2a8b30ffbb037035669f65a95a923edc8b288145
Reviewed-on: https://go-review.googlesource.com/c/go/+/734820
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
src/net/file_posix.go

index 132d03e9e3eda0b040c527e9b1a09a59dccb047c..b28ff5845d70d1ee1ab0805a880d1bd73d154551 100644 (file)
@@ -23,7 +23,11 @@ func newFileFD(f *os.File) (*netFD, error) {
                poll.CloseFunc(s)
                return nil, os.NewSyscallError("getsockopt", err)
        }
-       lsa, _ := syscall.Getsockname(s)
+       lsa, err := syscall.Getsockname(s)
+       if err != nil {
+               poll.CloseFunc(s)
+               return nil, os.NewSyscallError("getsockname", err)
+       }
        rsa, _ := syscall.Getpeername(s)
        switch lsa.(type) {
        case *syscall.SockaddrInet4: