]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: return error if GetQueuedCompletionStatus truncates key
authorJason A. Donenfeld <Jason@zx2c4.com>
Thu, 25 Feb 2021 01:58:04 +0000 (02:58 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Thu, 25 Feb 2021 09:46:02 +0000 (09:46 +0000)
This function has the wrong signature, so return an error when that
actually might lead to unexpected results. Users should switch to
x/sys/windows for the real version of this function.

Updates #44538.

Change-Id: I4d1f3d1e380815733ecfea683f939b1d25dcc32a
Reviewed-on: https://go-review.googlesource.com/c/go/+/296154
Trust: Jason A. Donenfeld <Jason@zx2c4.com>
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/syscall/syscall_windows.go

index 5310f2da80b04417718e948f1f12e4aeb3a97721..ee5311b176b7d0d52a0f57bbd16d238c84889b65 100644 (file)
@@ -1229,6 +1229,9 @@ func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overla
        err := getQueuedCompletionStatus(cphandle, qty, pukey, overlapped, timeout)
        if key != nil {
                *key = uint32(ukey)
+               if uintptr(*key) != ukey && err == nil {
+                       err = errorspkg.New("GetQueuedCompletionStatus returned key overflow")
+               }
        }
        return err
 }