Juan Lang : crypt32: Don' t crash when asked to verify a signature before the content has been finalized .

Alexandre Julliard julliard at winehq.org
Tue Sep 9 05:50:37 CDT 2008


Module: wine
Branch: master
Commit: b7d26dc9f55e0f5bb1211d2c8f9ce0fea898221b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b7d26dc9f55e0f5bb1211d2c8f9ce0fea898221b

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep  8 12:45:40 2008 -0700

crypt32: Don't crash when asked to verify a signature before the content has been finalized.

---

 dlls/crypt32/msg.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/dlls/crypt32/msg.c b/dlls/crypt32/msg.c
index 54c5bb0..8312ff9 100644
--- a/dlls/crypt32/msg.c
+++ b/dlls/crypt32/msg.c
@@ -2554,6 +2554,11 @@ static BOOL CDecodeSignedMsg_VerifySignature(CDecodeMsg *msg, PCERT_INFO info)
     BOOL ret = FALSE;
     DWORD i;
 
+    if (!msg->u.signed_data.signerHandles)
+    {
+        SetLastError(NTE_BAD_SIGNATURE);
+        return FALSE;
+    }
     for (i = 0; !ret && i < msg->u.signed_data.info->cSignerInfo; i++)
     {
         PCMSG_CMS_SIGNER_INFO signerInfo =
@@ -2596,6 +2601,8 @@ static BOOL CDecodeSignedMsg_VerifySignatureEx(CDecodeMsg *msg,
         SetLastError(ERROR_INVALID_PARAMETER);
     else if (para->dwSignerIndex >= msg->u.signed_data.info->cSignerInfo)
         SetLastError(CRYPT_E_SIGNER_NOT_FOUND);
+    else if (!msg->u.signed_data.signerHandles)
+        SetLastError(NTE_BAD_SIGNATURE);
     else
     {
         switch (para->dwSignerType)




More information about the wine-cvs mailing list