diff --git a/src/Certs.c b/src/Certs.c index c96bef581..561dc6858 100644 --- a/src/Certs.c +++ b/src/Certs.c @@ -316,8 +316,8 @@ static const LPCSTR const usage[] = { }; static BOOL BuildChain(struct X509CertContext* x509, HCERTSTORE store, PCCERT_CONTEXT* end_cert, PCCERT_CHAIN_CONTEXT* chain) { - struct X509Cert* cert; - CERT_CHAIN_PARA para = { 0 }; + struct X509Cert* cert = &x509->certs[0]; + CERT_CHAIN_PARA para = { 0 }; int i; BOOL ok = _CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING, cert->data, cert->offset, @@ -341,27 +341,24 @@ static BOOL BuildChain(struct X509CertContext* x509, HCERTSTORE store, PCCERT_CO } int Certs_VerifyChain(struct X509CertContext* x509) { - struct X509Cert* cert = &x509->certs[0]; PCCERT_CHAIN_CONTEXT chain = NULL; PCCERT_CONTEXT end_cert = NULL; HCERTSTORE store; DWORD res = 200; - BOOL ok; if (!_CertOpenStore) return ERR_NOT_SUPPORTED; store = _CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, 0, NULL); if (!store) return ERR_NOT_SUPPORTED; - ok = BuildChain(x509, store, &end_cert, &chain); - if (ok) { + if (BuildChain(x509, store, &end_cert, &chain)) { res = chain->TrustStatus.dwErrorStatus; if (res) Platform_Log1("Cert validation failed: %h", &res); } _CertFreeCertificateChain(chain); - ok = _CertFreeCertificateContext(end_cert); - ok = _CertCloseStore(store, 0); - return ERR_NOT_SUPPORTED; + _CertFreeCertificateContext(end_cert); + _CertCloseStore(store, 0); + return res; } #endif