mirror of
https://github.com/reactos/wine.git
synced 2025-02-21 13:23:25 +00:00
crypt32: Make sure a signed encode message's signer info is always initialized.
This commit is contained in:
parent
9ae5ef6641
commit
6763841e19
@ -1248,33 +1248,41 @@ static HCRYPTMSG CSignedEncodeMsg_Open(DWORD dwFlags,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
if (ret && info->cSigners)
|
if (ret)
|
||||||
{
|
{
|
||||||
msg->msg_data.info->rgSignerInfo =
|
if (info->cSigners)
|
||||||
CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
|
|
||||||
if (msg->msg_data.info->rgSignerInfo)
|
|
||||||
{
|
{
|
||||||
msg->msg_data.info->cSignerInfo = info->cSigners;
|
msg->msg_data.info->rgSignerInfo =
|
||||||
memset(msg->msg_data.info->rgSignerInfo, 0,
|
CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
|
||||||
msg->msg_data.info->cSignerInfo * sizeof(CMSG_SIGNER_INFO));
|
if (msg->msg_data.info->rgSignerInfo)
|
||||||
ret = CSignedMsgData_AllocateHandles(&msg->msg_data);
|
|
||||||
for (i = 0; ret && i < msg->msg_data.info->cSignerInfo; i++)
|
|
||||||
{
|
{
|
||||||
ret = CSignerInfo_Construct(
|
msg->msg_data.info->cSignerInfo = info->cSigners;
|
||||||
&msg->msg_data.info->rgSignerInfo[i],
|
memset(msg->msg_data.info->rgSignerInfo, 0,
|
||||||
&info->rgSigners[i]);
|
msg->msg_data.info->cSignerInfo * sizeof(CMSG_SIGNER_INFO));
|
||||||
if (ret)
|
ret = CSignedMsgData_AllocateHandles(&msg->msg_data);
|
||||||
|
for (i = 0; ret && i < msg->msg_data.info->cSignerInfo; i++)
|
||||||
{
|
{
|
||||||
ret = CSignedMsgData_ConstructSignerHandles(
|
ret = CSignerInfo_Construct(
|
||||||
&msg->msg_data, i, info->rgSigners[i].hCryptProv);
|
&msg->msg_data.info->rgSignerInfo[i],
|
||||||
if (dwFlags & CMSG_CRYPT_RELEASE_CONTEXT_FLAG)
|
&info->rgSigners[i]);
|
||||||
CryptReleaseContext(info->rgSigners[i].hCryptProv,
|
if (ret)
|
||||||
0);
|
{
|
||||||
|
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
|
else
|
||||||
ret = FALSE;
|
{
|
||||||
|
msg->msg_data.info->cSignerInfo = 0;
|
||||||
|
msg->msg_data.signerHandles = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ret)
|
if (ret)
|
||||||
ret = CRYPT_ConstructBlobArray(
|
ret = CRYPT_ConstructBlobArray(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user