wintrust: Correct GenericChainCertificateTrust's handling of WINTRUST_CreateChainForSigner's return value.
This commit is contained in:
parent
24ff704835
commit
2f83664981
|
@ -845,7 +845,7 @@ HRESULT WINAPI WintrustCertificateTrust(CRYPT_PROVIDER_DATA *data)
|
||||||
|
|
||||||
HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data)
|
HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data)
|
||||||
{
|
{
|
||||||
BOOL ret;
|
DWORD err;
|
||||||
WTD_GENERIC_CHAIN_POLICY_DATA *policyData =
|
WTD_GENERIC_CHAIN_POLICY_DATA *policyData =
|
||||||
data->pWintrustData->pPolicyCallbackData;
|
data->pWintrustData->pPolicyCallbackData;
|
||||||
|
|
||||||
|
@ -854,15 +854,11 @@ HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data)
|
||||||
if (policyData && policyData->u.cbSize !=
|
if (policyData && policyData->u.cbSize !=
|
||||||
sizeof(WTD_GENERIC_CHAIN_POLICY_CREATE_INFO))
|
sizeof(WTD_GENERIC_CHAIN_POLICY_CREATE_INFO))
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
err = ERROR_INVALID_PARAMETER;
|
||||||
ret = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (!data->csSigners)
|
if (!data->csSigners)
|
||||||
{
|
err = TRUST_E_NOSIGNATURE;
|
||||||
ret = FALSE;
|
|
||||||
SetLastError(TRUST_E_NOSIGNATURE);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DWORD i;
|
DWORD i;
|
||||||
|
@ -880,19 +876,18 @@ HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data)
|
||||||
pChainPara = &chainPara;
|
pChainPara = &chainPara;
|
||||||
pCreateInfo = &createInfo;
|
pCreateInfo = &createInfo;
|
||||||
}
|
}
|
||||||
ret = TRUE;
|
err = ERROR_SUCCESS;
|
||||||
for (i = 0; i < data->csSigners; i++)
|
for (i = 0; !err && i < data->csSigners; i++)
|
||||||
ret = WINTRUST_CreateChainForSigner(data, i, pCreateInfo,
|
err = WINTRUST_CreateChainForSigner(data, i, pCreateInfo,
|
||||||
pChainPara);
|
pChainPara);
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if (!ret)
|
if (err)
|
||||||
data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV] =
|
data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV] = err;
|
||||||
GetLastError();
|
TRACE("returning %d (%08x)\n", !err ? S_OK : S_FALSE,
|
||||||
TRACE("returning %d (%08x)\n", ret ? S_OK : S_FALSE,
|
|
||||||
data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV]);
|
data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV]);
|
||||||
return ret ? S_OK : S_FALSE;
|
return !err ? S_OK : S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI SoftpubAuthenticode(CRYPT_PROVIDER_DATA *data)
|
HRESULT WINAPI SoftpubAuthenticode(CRYPT_PROVIDER_DATA *data)
|
||||||
|
|
Loading…
Reference in New Issue