crypt32: Use a helper function to allocate signer handles.
This commit is contained in:
parent
1f9d9be762
commit
07ba16c291
|
@ -807,6 +807,28 @@ static BOOL CSignerHandles_Construct(CSignerHandles *handles,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Allocates a CSignedMsgData's handles. Assumes its info has already been
|
||||||
|
* constructed.
|
||||||
|
*/
|
||||||
|
static BOOL CSignedMsgData_AllocateHandles(CSignedMsgData *msg_data)
|
||||||
|
{
|
||||||
|
BOOL ret = TRUE;
|
||||||
|
|
||||||
|
if (msg_data->info->cSignerInfo)
|
||||||
|
{
|
||||||
|
msg_data->signerHandles =
|
||||||
|
CryptMemAlloc(msg_data->info->cSignerInfo * sizeof(CSignerHandles));
|
||||||
|
if (msg_data->signerHandles)
|
||||||
|
memset(msg_data->signerHandles, 0,
|
||||||
|
msg_data->info->cSignerInfo * sizeof(CSignerHandles));
|
||||||
|
else
|
||||||
|
ret = FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
msg_data->signerHandles = NULL;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void CSignedMsgData_CloseHandles(CSignedMsgData *msg_data)
|
static void CSignedMsgData_CloseHandles(CSignedMsgData *msg_data)
|
||||||
{
|
{
|
||||||
DWORD i;
|
DWORD i;
|
||||||
|
@ -1185,23 +1207,14 @@ static HCRYPTMSG CSignedEncodeMsg_Open(DWORD dwFlags,
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
if (ret && info->cSigners)
|
if (ret && info->cSigners)
|
||||||
{
|
{
|
||||||
msg->msg_data.signerHandles =
|
msg->msg_data.info->rgSignerInfo =
|
||||||
CryptMemAlloc(info->cSigners * sizeof(CSignerHandles));
|
CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
|
||||||
if (msg->msg_data.signerHandles)
|
|
||||||
msg->msg_data.info->rgSignerInfo =
|
|
||||||
CryptMemAlloc(info->cSigners * sizeof(CMSG_SIGNER_INFO));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = FALSE;
|
|
||||||
msg->msg_data.info->rgSignerInfo = NULL;
|
|
||||||
}
|
|
||||||
if (msg->msg_data.info->rgSignerInfo)
|
if (msg->msg_data.info->rgSignerInfo)
|
||||||
{
|
{
|
||||||
msg->msg_data.info->cSignerInfo = info->cSigners;
|
msg->msg_data.info->cSignerInfo = info->cSigners;
|
||||||
memset(msg->msg_data.signerHandles, 0,
|
|
||||||
msg->msg_data.info->cSignerInfo * sizeof(CSignerHandles));
|
|
||||||
memset(msg->msg_data.info->rgSignerInfo, 0,
|
memset(msg->msg_data.info->rgSignerInfo, 0,
|
||||||
msg->msg_data.info->cSignerInfo * sizeof(CMSG_SIGNER_INFO));
|
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++)
|
for (i = 0; ret && i < msg->msg_data.info->cSignerInfo; i++)
|
||||||
{
|
{
|
||||||
ret = CSignerInfo_Construct(
|
ret = CSignerInfo_Construct(
|
||||||
|
|
Loading…
Reference in New Issue