Module: wine Branch: master Commit: 9da4d2f3a9dedd724c66c2e3a90da516fd3d0c21 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9da4d2f3a9dedd724c66c2e3a9...
Author: Juan Lang juan.lang@gmail.com Date: Fri Jun 12 09:35:41 2009 -0700
wintrust: Check for the presence of required members of WINTRUST_CERT_INFO rather than requiring callers to be compiled with the same SDK version.
---
dlls/wintrust/softpub.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c index 9c79fa8..7f5f86f 100644 --- a/dlls/wintrust/softpub.c +++ b/dlls/wintrust/softpub.c @@ -256,7 +256,8 @@ static BOOL SOFTPUB_LoadCertMessage(CRYPT_PROVIDER_DATA *data) BOOL ret;
if (data->pWintrustData->u.pCert && - data->pWintrustData->u.pCert->cbStruct == sizeof(WINTRUST_CERT_INFO)) + WVT_IS_CBSTRUCT_GT_MEMBEROFFSET(WINTRUST_CERT_INFO, + data->pWintrustData->u.pCert->cbStruct, psCertContext)) { if (data->psPfns) { @@ -266,7 +267,9 @@ static BOOL SOFTPUB_LoadCertMessage(CRYPT_PROVIDER_DATA *data) /* Add a signer with nothing but the time to verify, so we can * add a cert to it */ - if (data->pWintrustData->u.pCert->psftVerifyAsOf) + if (WVT_ISINSTRUCT(WINTRUST_CERT_INFO, + data->pWintrustData->u.pCert->cbStruct, psftVerifyAsOf) && + data->pWintrustData->u.pCert->psftVerifyAsOf) data->sftSystemTime = signer.sftVerifyAsOf; else { @@ -280,10 +283,12 @@ static BOOL SOFTPUB_LoadCertMessage(CRYPT_PROVIDER_DATA *data) { ret = data->psPfns->pfnAddCert2Chain(data, 0, FALSE, 0, data->pWintrustData->u.pCert->psCertContext); - for (i = 0; ret && i < data->pWintrustData->u.pCert->chStores; - i++) - ret = data->psPfns->pfnAddStore2Chain(data, - data->pWintrustData->u.pCert->pahStores[i]); + if (WVT_ISINSTRUCT(WINTRUST_CERT_INFO, + data->pWintrustData->u.pCert->cbStruct, pahStores)) + for (i = 0; + ret && i < data->pWintrustData->u.pCert->chStores; i++) + ret = data->psPfns->pfnAddStore2Chain(data, + data->pWintrustData->u.pCert->pahStores[i]); } } else