aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/version
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2020-10-19 09:36:52 -0700
committerJason A. Donenfeld <Jason@zx2c4.com>2020-10-21 18:11:40 +0200
commit7d6fe89192fbf6fce63ca516cde306c9a17b8a7e (patch)
treece362f10c9da479b94915137095ab63f5ce8f582 /version
parentbuild: use crowdin backdoor instead of api key (diff)
downloadwireguard-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.go6
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 {