Juan Lang : wintrust: Fail creating a chain if a store couldn't be created.
Alexandre Julliard
julliard at winehq.org
Fri Jan 29 10:56:30 CST 2010
Module: wine
Branch: master
Commit: 711ca0f4f3a3ec1fcaffac8c47dce0bf316cf1cc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=711ca0f4f3a3ec1fcaffac8c47dce0bf316cf1cc
Author: Juan Lang <juan.lang at gmail.com>
Date: Wed Jan 27 14:14:53 2010 -0800
wintrust: Fail creating a chain if a store couldn't be created.
---
dlls/wintrust/softpub.c | 64 +++++++++++++++++++++++++---------------------
1 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c
index 29d8523..a0a3455 100644
--- a/dlls/wintrust/softpub.c
+++ b/dlls/wintrust/softpub.c
@@ -771,46 +771,52 @@ static BOOL WINTRUST_CreateChainForSigner(CRYPT_PROVIDER_DATA *data,
for (i = 0; i < data->chStores; i++)
CertAddStoreToCollection(store, data->pahStores[i], 0, 0);
}
+ else
+ ret = FALSE;
}
- /* Expect the end certificate for each signer to be the only cert in the
- * chain:
- */
- if (data->pasSigners[signer].csCertChain)
+ if (ret)
{
- /* Create a certificate chain for each signer */
- ret = CertGetCertificateChain(createInfo->hChainEngine,
- data->pasSigners[signer].pasCertChain[0].pCert,
- &data->pasSigners[signer].sftVerifyAsOf, store,
- chainPara, createInfo->dwFlags, createInfo->pvReserved,
- &data->pasSigners[signer].pChainContext);
- if (ret)
+ /* Expect the end certificate for each signer to be the only cert in
+ * the chain:
+ */
+ if (data->pasSigners[signer].csCertChain)
{
- if (data->pasSigners[signer].pChainContext->cChain != 1)
- {
- FIXME("unimplemented for more than 1 simple chain\n");
- ret = FALSE;
- }
- else
+ /* Create a certificate chain for each signer */
+ ret = CertGetCertificateChain(createInfo->hChainEngine,
+ data->pasSigners[signer].pasCertChain[0].pCert,
+ &data->pasSigners[signer].sftVerifyAsOf, store,
+ chainPara, createInfo->dwFlags, createInfo->pvReserved,
+ &data->pasSigners[signer].pChainContext);
+ if (ret)
{
- DWORD err;
-
- if (!(err = WINTRUST_CopyChain(data, signer)))
+ if (data->pasSigners[signer].pChainContext->cChain != 1)
{
- if (data->psPfns->pfnCertCheckPolicy)
- ret = data->psPfns->pfnCertCheckPolicy(data, signer,
- FALSE, 0);
- else
- TRACE("no cert check policy, skipping policy check\n");
+ FIXME("unimplemented for more than 1 simple chain\n");
+ ret = FALSE;
}
else
{
- SetLastError(err);
- ret = FALSE;
+ DWORD err;
+
+ if (!(err = WINTRUST_CopyChain(data, signer)))
+ {
+ if (data->psPfns->pfnCertCheckPolicy)
+ ret = data->psPfns->pfnCertCheckPolicy(data, signer,
+ FALSE, 0);
+ else
+ TRACE(
+ "no cert check policy, skipping policy check\n");
+ }
+ else
+ {
+ SetLastError(err);
+ ret = FALSE;
+ }
}
}
}
+ CertCloseStore(store, 0);
}
- CertCloseStore(store, 0);
return ret;
}
More information about the wine-cvs
mailing list