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>
err := fd.pfd.RawControl(func(fd uintptr) {
h, syserr = dupSocket(syscall.Handle(fd))
})
- if err != nil {
+ if err == nil {
err = syserr
}
if err != nil {
err = sc.Control(func(fd uintptr) {
h, syserr = dupSocket(syscall.Handle(fd))
})
- if err != nil {
+ if err == nil {
err = syserr
}
if err != nil {