mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-20 06:18:23 +00:00
crypt32: Decode CRL dist points using CRYPT_AsnDecodeArrayNoAlloc.
This commit is contained in:
parent
155aa41d7c
commit
36fc7b06b1
|
@ -5079,9 +5079,29 @@ static BOOL WINAPI CRYPT_AsnDecodeCRLDistPoints(DWORD dwCertEncodingType,
|
|||
sizeof(CRL_DIST_POINTS_INFO),
|
||||
CRYPT_AsnDecodeDistPoint, sizeof(CRL_DIST_POINT), TRUE,
|
||||
offsetof(CRL_DIST_POINT, DistPointName.u.FullName.rgAltEntry) };
|
||||
DWORD bytesNeeded;
|
||||
|
||||
ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags,
|
||||
pDecodePara, pvStructInfo, pcbStructInfo, NULL, NULL);
|
||||
ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc, pbEncoded, cbEncoded,
|
||||
dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, &bytesNeeded, NULL);
|
||||
if (ret)
|
||||
{
|
||||
if (!pvStructInfo)
|
||||
*pcbStructInfo = bytesNeeded;
|
||||
else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags, pDecodePara,
|
||||
pvStructInfo, pcbStructInfo, bytesNeeded)))
|
||||
{
|
||||
CRL_DIST_POINTS_INFO *info;
|
||||
|
||||
if (dwFlags & CRYPT_DECODE_ALLOC_FLAG)
|
||||
pvStructInfo = *(BYTE **)pvStructInfo;
|
||||
info = pvStructInfo;
|
||||
info->rgDistPoint = (PCRL_DIST_POINT)
|
||||
((BYTE *)pvStructInfo + sizeof(CRL_DIST_POINTS_INFO));
|
||||
ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc,
|
||||
pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG,
|
||||
&info->cDistPoint, pcbStructInfo, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
__EXCEPT_PAGE_FAULT
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue