]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/tls: fix broken looping code in windows root CA fetcher
authorMikkel Krautz <mikkel@krautz.dk>
Fri, 14 Oct 2011 16:26:38 +0000 (12:26 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 14 Oct 2011 16:26:38 +0000 (12:26 -0400)
R=alex.brainman, hectorchu, rsc
CC=golang-dev
https://golang.org/cl/5263045

src/pkg/crypto/tls/root_windows.go

index 9d64de437a907f3fec4b36d9ac3f51f806ef1368..b8e27a9a5d261899759f324f667a3ab54b04af0b 100644 (file)
@@ -17,35 +17,31 @@ func loadStore(roots *x509.CertPool, name string) {
                return
        }
 
-       var prev *syscall.CertContext
+       var cert *syscall.CertContext
        for {
-               cur := syscall.CertEnumCertificatesInStore(store, prev)
-               if cur == nil {
+               cert = syscall.CertEnumCertificatesInStore(store, cert)
+               if cert == nil {
                        break
                }
 
-               var buf []byte
-               hdrp := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
-               hdrp.Data = cur.EncodedCert
-               hdrp.Len = int(cur.Length)
-               hdrp.Cap = int(cur.Length)
+               var asn1Slice []byte
+               hdrp := (*reflect.SliceHeader)(unsafe.Pointer(&asn1Slice))
+               hdrp.Data = cert.EncodedCert
+               hdrp.Len = int(cert.Length)
+               hdrp.Cap = int(cert.Length)
 
-               cert, err := x509.ParseCertificate(buf)
-               if err != nil {
-                       continue
-               }
+               buf := make([]byte, len(asn1Slice))
+               copy(buf, asn1Slice)
 
-               roots.AddCert(cert)
-               prev = cur
+               if cert, err := x509.ParseCertificate(buf); err == nil {
+                       roots.AddCert(cert)
+               }
        }
 
        syscall.CertCloseStore(store, 0)
 }
 
 func initDefaultRoots() {
-       // TODO(brainman): To be fixed
-       return
-
        roots := x509.NewCertPool()
 
        // Roots