From a82b36ac9811dcec46f0db1967d4fec357522ff2 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Thu, 6 Sep 2007 09:59:19 -0700 Subject: [PATCH] crypt32: Store world store in chain. --- dlls/crypt32/chain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index c6b197a1522..ffaef451e9c 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -203,6 +203,7 @@ void default_chain_engine_free(void) typedef struct _CertificateChain { CERT_CHAIN_CONTEXT context; + HCERTSTORE world; LONG ref; } CertificateChain, *PCertificateChain; @@ -585,6 +586,7 @@ static BOOL CRYPT_BuildCandidateChainFromCert(HCERTCHAINENGINE hChainEngine, if (chain) { chain->ref = 1; + chain->world = world; chain->context.cbSize = sizeof(CERT_CHAIN_CONTEXT); memcpy(&chain->context.TrustStatus, &simpleChain->TrustStatus, sizeof(CERT_TRUST_STATUS)); @@ -600,7 +602,6 @@ static BOOL CRYPT_BuildCandidateChainFromCert(HCERTCHAINENGINE hChainEngine, ret = FALSE; *ppChain = chain; } - CertCloseStore(world, 0); return ret; } @@ -663,6 +664,7 @@ static void CRYPT_FreeChainContext(PCertificateChain chain) for (i = 0; i < chain->context.cChain; i++) CRYPT_FreeSimpleChain(chain->context.rgpChain[i]); CryptMemFree(chain->context.rgpChain); + CertCloseStore(chain->world, 0); CryptMemFree(chain); }