Module: wine Branch: master Commit: d7d4a5c4a96d662abe79268b6e956145e85493d7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d7d4a5c4a96d662abe79268b6e...
Author: Juan Lang juan.lang@gmail.com Date: Fri Sep 28 12:47:03 2007 -0700
wintrust: In SoftpubLoadSignature, don't assume a message is present.
---
dlls/wintrust/softpub.c | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c index 59e4966..5a2aab5 100644 --- a/dlls/wintrust/softpub.c +++ b/dlls/wintrust/softpub.c @@ -452,28 +452,34 @@ static BOOL WINTRUST_VerifySigner(CRYPT_PROVIDER_DATA *data, DWORD signerIdx) HRESULT WINAPI SoftpubLoadSignature(CRYPT_PROVIDER_DATA *data) { BOOL ret; - DWORD signerCount, size;
TRACE("(%p)\n", data);
if (!data->padwTrustStepErrors) return S_FALSE;
- size = sizeof(signerCount); - ret = CryptMsgGetParam(data->hMsg, CMSG_SIGNER_COUNT_PARAM, 0, - &signerCount, &size); - if (ret) + if (data->hMsg) { - DWORD i; + DWORD signerCount, size;
- for (i = 0; ret && i < signerCount; i++) + size = sizeof(signerCount); + ret = CryptMsgGetParam(data->hMsg, CMSG_SIGNER_COUNT_PARAM, 0, + &signerCount, &size); + if (ret) { - if ((ret = WINTRUST_SaveSigner(data, i))) - ret = WINTRUST_VerifySigner(data, i); + DWORD i; + + for (i = 0; ret && i < signerCount; i++) + { + if ((ret = WINTRUST_SaveSigner(data, i))) + ret = WINTRUST_VerifySigner(data, i); + } } + else + SetLastError(TRUST_E_NOSIGNATURE); } else - SetLastError(TRUST_E_NOSIGNATURE); + ret = TRUE; if (!ret) data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] = GetLastError();