crypt32: Decode unicode names using CRYPT_AsnDecodeArrayNoAlloc.
This commit is contained in:
parent
67ee87664e
commit
1b1626ac81
@ -2175,9 +2175,29 @@ static BOOL WINAPI CRYPT_AsnDecodeUnicodeName(DWORD dwCertEncodingType,
|
|||||||
sizeof(CERT_NAME_INFO),
|
sizeof(CERT_NAME_INFO),
|
||||||
CRYPT_AsnDecodeUnicodeRdn, sizeof(CERT_RDN), TRUE,
|
CRYPT_AsnDecodeUnicodeRdn, sizeof(CERT_RDN), TRUE,
|
||||||
offsetof(CERT_RDN, rgRDNAttr) };
|
offsetof(CERT_RDN, rgRDNAttr) };
|
||||||
|
DWORD bytesNeeded;
|
||||||
|
|
||||||
ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags,
|
ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc, pbEncoded, cbEncoded,
|
||||||
pDecodePara, pvStructInfo, pcbStructInfo, NULL, NULL);
|
dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, &bytesNeeded, NULL);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
if (!pvStructInfo)
|
||||||
|
*pcbStructInfo = bytesNeeded;
|
||||||
|
else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags, pDecodePara,
|
||||||
|
pvStructInfo, pcbStructInfo, bytesNeeded)))
|
||||||
|
{
|
||||||
|
CERT_NAME_INFO *info;
|
||||||
|
|
||||||
|
if (dwFlags & CRYPT_DECODE_ALLOC_FLAG)
|
||||||
|
pvStructInfo = *(BYTE **)pvStructInfo;
|
||||||
|
info = pvStructInfo;
|
||||||
|
info->rgRDN =
|
||||||
|
(PCERT_RDN)((BYTE *)pvStructInfo + sizeof(CERT_NAME_INFO));
|
||||||
|
ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc,
|
||||||
|
pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG,
|
||||||
|
&info->cRDN, pcbStructInfo, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__EXCEPT_PAGE_FAULT
|
__EXCEPT_PAGE_FAULT
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user