Juan Lang : crypt32: Make sure a signed encode message' s signer info is always initialized.
Alexandre Julliard
julliard at winehq.org
Fri Oct 19 08:35:47 CDT 2007
Module: wine
Branch: master
Commit: 6763841e19338abb3b72ba3d5684bc82cd63d139
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6763841e19338abb3b72ba3d5684bc82cd63d139
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Oct 18 20:47:30 2007 -0700
crypt32: Make sure a signed encode message's signer info is always initialized.
---
dlls/crypt32/msg.c | 46 +++++++++++++++++++++++++++-------------------
1 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/dlls/crypt32/msg.c b/dlls/crypt32/msg.c
index 2d19736..38abd48 100644
--- a/dlls/crypt32/msg.c
+++ b/dlls/crypt32/msg.c
@@ -1248,33 +1248,41 @@ static HCRYPTMSG CSignedEncodeMsg_Open(DWORD dwFlags,
}
else
ret = FALSE;
- if (ret && info->cSigners)
+ if (ret)
{
- msg->msg_data.info->rgSignerInfo =
- CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
- if (msg->msg_data.info->rgSignerInfo)
+ if (info->cSigners)
{
- msg->msg_data.info->cSignerInfo = info->cSigners;
- memset(msg->msg_data.info->rgSignerInfo, 0,
- msg->msg_data.info->cSignerInfo * sizeof(CMSG_SIGNER_INFO));
- ret = CSignedMsgData_AllocateHandles(&msg->msg_data);
- for (i = 0; ret && i < msg->msg_data.info->cSignerInfo; i++)
+ msg->msg_data.info->rgSignerInfo =
+ CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
+ if (msg->msg_data.info->rgSignerInfo)
{
- ret = CSignerInfo_Construct(
- &msg->msg_data.info->rgSignerInfo[i],
- &info->rgSigners[i]);
- if (ret)
+ msg->msg_data.info->cSignerInfo = info->cSigners;
+ memset(msg->msg_data.info->rgSignerInfo, 0,
+ msg->msg_data.info->cSignerInfo * sizeof(CMSG_SIGNER_INFO));
+ ret = CSignedMsgData_AllocateHandles(&msg->msg_data);
+ for (i = 0; ret && i < msg->msg_data.info->cSignerInfo; i++)
{
- ret = CSignedMsgData_ConstructSignerHandles(
- &msg->msg_data, i, info->rgSigners[i].hCryptProv);
- if (dwFlags & CMSG_CRYPT_RELEASE_CONTEXT_FLAG)
- CryptReleaseContext(info->rgSigners[i].hCryptProv,
- 0);
+ ret = CSignerInfo_Construct(
+ &msg->msg_data.info->rgSignerInfo[i],
+ &info->rgSigners[i]);
+ if (ret)
+ {
+ ret = CSignedMsgData_ConstructSignerHandles(
+ &msg->msg_data, i, info->rgSigners[i].hCryptProv);
+ if (dwFlags & CMSG_CRYPT_RELEASE_CONTEXT_FLAG)
+ CryptReleaseContext(info->rgSigners[i].hCryptProv,
+ 0);
+ }
}
}
+ else
+ ret = FALSE;
}
else
- ret = FALSE;
+ {
+ msg->msg_data.info->cSignerInfo = 0;
+ msg->msg_data.signerHandles = NULL;
+ }
}
if (ret)
ret = CRYPT_ConstructBlobArray(
More information about the wine-cvs
mailing list