From 58d75ccda058fc1b4280dd6f3842395c35fbf807 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Fri, 28 Sep 2007 12:47:03 -0700 Subject: [PATCH] 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_ 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(); -- 1.4.1