Module: wine Branch: master Commit: 1781878b009c541ef6cd0e56d3b5945805283f44 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1781878b009c541ef6cd0e56d3...
Author: Juan Lang juan.lang@gmail.com Date: Wed Jan 27 14:03:13 2010 -0800
wintrust: Return error directly from WINTRUST_VerifySigner.
---
dlls/wintrust/softpub.c | 34 +++++++++++++++++++++------------- 1 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c index 8d017d2..4a702c1 100644 --- a/dlls/wintrust/softpub.c +++ b/dlls/wintrust/softpub.c @@ -520,9 +520,9 @@ static CERT_INFO *WINTRUST_GetSignerCertInfo(CRYPT_PROVIDER_DATA *data, return certInfo; }
-static BOOL WINTRUST_VerifySigner(CRYPT_PROVIDER_DATA *data, DWORD signerIdx) +static DWORD WINTRUST_VerifySigner(CRYPT_PROVIDER_DATA *data, DWORD signerIdx) { - BOOL ret; + DWORD err; CERT_INFO *certInfo = WINTRUST_GetSignerCertInfo(data, signerIdx);
if (certInfo) @@ -535,25 +535,24 @@ static BOOL WINTRUST_VerifySigner(CRYPT_PROVIDER_DATA *data, DWORD signerIdx) CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA para = { sizeof(para), 0, signerIdx, CMSG_VERIFY_SIGNER_CERT, (LPVOID)subject };
- ret = CryptMsgControl(data->hMsg, 0, CMSG_CTRL_VERIFY_SIGNATURE_EX, - ¶); - if (!ret) - SetLastError(TRUST_E_CERT_SIGNATURE); + if (!CryptMsgControl(data->hMsg, 0, CMSG_CTRL_VERIFY_SIGNATURE_EX, + ¶)) + err = TRUST_E_CERT_SIGNATURE; else + { data->psPfns->pfnAddCert2Chain(data, signerIdx, FALSE, 0, subject); + err = ERROR_SUCCESS; + } CertFreeCertificateContext(subject); } else - { - SetLastError(TRUST_E_NO_SIGNER_CERT); - ret = FALSE; - } + err = TRUST_E_NO_SIGNER_CERT; data->psPfns->pfnFree(certInfo); } else - ret = FALSE; - return ret; + err = GetLastError(); + return err; }
HRESULT WINAPI SoftpubLoadSignature(CRYPT_PROVIDER_DATA *data) @@ -579,7 +578,16 @@ HRESULT WINAPI SoftpubLoadSignature(CRYPT_PROVIDER_DATA *data) for (i = 0; ret && i < signerCount; i++) { if ((ret = WINTRUST_SaveSigner(data, i))) - ret = WINTRUST_VerifySigner(data, i); + { + DWORD err; + + err = WINTRUST_VerifySigner(data, i); + if (err) + { + SetLastError(err); + ret = FALSE; + } + } } } else