]> Cypherpunks repositories - gostls13.git/commitdiff
net: fix socket duplication error handling on Windows
authorqmuntal <quimmuntal@gmail.com>
Thu, 8 Jan 2026 14:50:15 +0000 (15:50 +0100)
committerQuim Muntal <quimmuntal@gmail.com>
Mon, 12 Jan 2026 19:53:11 +0000 (11:53 -0800)
Calls to dupSocket may fail, but the error is not properly handled
because the surrounding code incorrectly checks for nil error instead
of non-nil error.

I'm not aware of any code paths that would trigger this error, and
I haven't been able to create a test case that does so, but this
change fixes the error handling to correctly propagate any errors
from dupSocket.

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

index 52985be8e65403df188fef357abed6640528a84a..c28ce045c47811202395fb9477c28325234f8e10 100644 (file)
@@ -248,7 +248,7 @@ func (fd *netFD) dup() (*os.File, error) {
        err := fd.pfd.RawControl(func(fd uintptr) {
                h, syserr = dupSocket(syscall.Handle(fd))
        })
-       if err != nil {
+       if err == nil {
                err = syserr
        }
        if err != nil {
index b4eb00e56448a578d509702f71aaa09edc5b3f6a..6a6305035a151aae3c9da9c7cd14beaa9051bcd0 100644 (file)
@@ -39,7 +39,7 @@ func dupFileSocket(f *os.File) (syscall.Handle, error) {
        err = sc.Control(func(fd uintptr) {
                h, syserr = dupSocket(syscall.Handle(fd))
        })
-       if err != nil {
+       if err == nil {
                err = syserr
        }
        if err != nil {