]> Cypherpunks repositories - gostls13.git/commit
syscall: introduce Pointer type and use it instead of uintptr
authorAlex Brainman <alex.brainman@gmail.com>
Wed, 11 Apr 2018 09:43:39 +0000 (19:43 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 18 Apr 2018 08:50:42 +0000 (08:50 +0000)
commit4869ec00e87ef49db2646c25d28d5c7e4f1caff8
tree07b13c9f57b9eb4287d669b56193fbcfbc050517
parent3042463d61a4a9165531aaf45833f1dcefb1e5f9
syscall: introduce Pointer type and use it instead of uintptr

Some syscall structures used by crypto/x509 have uintptr
fields that store pointers. These pointers are set with
a pointer to another Go structure. But the pointers are
not visible by garbage collector, and GC does not update
the fields after they were set. So when structure with
invalid uintptr pointers passed to Windows, we get
memory corruption.

This CL introduces CertInfo, CertTrustListInfo and
CertRevocationCrlInfo types. It uses pointers to new types
instead of uintptr in CertContext, CertSimpleChain and
CertRevocationInfo.

CertRevocationInfo, CertChainPolicyPara and
CertChainPolicyStatus types have uintptr field that can
be pointer to many different things (according to Windows
API). So this CL introduces Pointer type to be used for
those cases.

As suggested by Austin Clements.

Fixes #21376
Updates #24820

Change-Id: If95cd9eee3c69e4cfc35b7b25b1b40c2dc8f0df7
Reviewed-on: https://go-review.googlesource.com/106275
Reviewed-by: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
api/except.txt
src/crypto/x509/root_windows.go
src/syscall/types_windows.go