]> Cypherpunks.ru repositories - gostls13.git/commit
syscall: correct CertOpenStore to expect a 0 return value on failure
authorJason A. Donenfeld <Jason@zx2c4.com>
Sun, 29 Nov 2020 12:33:37 +0000 (13:33 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sat, 5 Dec 2020 12:36:42 +0000 (12:36 +0000)
commitbe9379f8a8e2bfd924966020d177552d01833fdb
treedb23482d49a7ea01f4436d97d13f9bb4fc0c5c77
parent4de4480dc34fbe4f7b0ed97eada26aef7a7e2337
syscall: correct CertOpenStore to expect a 0 return value on failure

According to [1], this function returns NULL when it errors, rather than
INVALID_HANDLE_VALUE, which other Win32 functions return. This was
pointed out in CL 273446 for the x/sys package, and this patch here
cleans it up for the syscall package and updates the vendored x/sys
package using the usual `go get/go mod vendor` dance. The function is
currently in use by crypto/x509/root_windows.go, which calls
CertOpenStore(CERT_STORE_PROV_MEMORY), which I assume can fail under OOM
or other weird conditions. Quick reversing indicates that [1] is
correct, as there's a `xor eax, eax` in the error paths of the function
just before jumping to the epilogue.

[1] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-certopenstore#return-value

Change-Id: I77c0b0319c13313212f8710785252c494da56ed5
Reviewed-on: https://go-review.googlesource.com/c/go/+/273827
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Trust: Jason A. Donenfeld <Jason@zx2c4.com>
Trust: Alex Brainman <alex.brainman@gmail.com>
80 files changed:
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_darwin_386.s
src/cmd/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_darwin_arm.s
src/cmd/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_freebsd_386.s
src/cmd/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
src/cmd/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_386.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_arm.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
src/cmd/vendor/golang.org/x/sys/unix/asm_netbsd_386.s
src/cmd/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
src/cmd/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_openbsd_386.s
src/cmd/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
src/cmd/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s
src/cmd/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/endian_big.go
src/cmd/vendor/golang.org/x/sys/unix/endian_little.go
src/cmd/vendor/golang.org/x/sys/unix/mkerrors.sh
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux.go
src/cmd/vendor/golang.org/x/sys/windows/dll_windows.go
src/cmd/vendor/golang.org/x/sys/windows/security_windows.go
src/cmd/vendor/golang.org/x/sys/windows/service.go
src/cmd/vendor/golang.org/x/sys/windows/setupapierrors_windows.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/windows/syscall_windows.go
src/cmd/vendor/golang.org/x/sys/windows/types_windows.go
src/cmd/vendor/golang.org/x/sys/windows/zsyscall_windows.go
src/cmd/vendor/modules.txt
src/go.mod
src/go.sum
src/syscall/syscall_windows.go
src/syscall/zsyscall_windows.go
src/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
src/vendor/golang.org/x/sys/cpu/cpu_arm64.s
src/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
src/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
src/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
src/vendor/golang.org/x/sys/cpu/cpu_s390x.s
src/vendor/golang.org/x/sys/cpu/cpu_x86.s
src/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
src/vendor/modules.txt