diff options
author | 2020-10-19 09:36:52 -0700 | |
---|---|---|
committer | 2020-10-21 18:11:40 +0200 | |
commit | 7d6fe89192fbf6fce63ca516cde306c9a17b8a7e (patch) | |
tree | ce362f10c9da479b94915137095ab63f5ce8f582 /version | |
parent | build: use crowdin backdoor instead of api key (diff) | |
download | wireguard-windows-7d6fe89192fbf6fce63ca516cde306c9a17b8a7e.tar.xz wireguard-windows-7d6fe89192fbf6fce63ca516cde306c9a17b8a7e.zip |
winipcfg, embeddable-dll-service, wintrust: fix Go 1.15 checkptr violations
Avoids "converted pointer straddles allocation" failures at runtime
when building binaries in race mode with Go 1.15, which enables
checkptr: https://golang.org/doc/go1.15#windows
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
[Jason: Note Go 1.16/1.17 todo item.]
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'version')
-rw-r--r-- | version/wintrust/certificate_windows.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/version/wintrust/certificate_windows.go b/version/wintrust/certificate_windows.go index 1e145095..65b1eaed 100644 --- a/version/wintrust/certificate_windows.go +++ b/version/wintrust/certificate_windows.go @@ -48,7 +48,11 @@ func ExtractCertificates(path string) ([]x509.Certificate, error) { break } buf := make([]byte, cert.Length) - copy(buf, (*[1 << 20]byte)(unsafe.Pointer(cert.EncodedCert))[:]) + //TODO: when Go 1.16 or 1.17 comes out, switch to: + // copy(buf, unsafe.Slice(unsafe.Pointer(cert.EncodedCert), len(buf))) + for i := range buf { + buf[i] = *(*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(cert.EncodedCert)) + uintptr(i))) + } if c, err := x509.ParseCertificate(buf); err == nil { certs = append(certs, *c) } else { |