Module: wine Branch: master Commit: 77cfb32360801e11b5e631e8fca7db397cc6e5ff URL: http://source.winehq.org/git/wine.git/?a=commit;h=77cfb32360801e11b5e631e8fc...
Author: Juan Lang juan.lang@gmail.com Date: Wed Oct 14 12:57:21 2009 -0700
crypt32: Simplify CRYPT_AsnDecodePKCSAttributes.
---
dlls/crypt32/decode.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index 8c0b4bd..42513c0 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -3135,14 +3135,15 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSAttributes(DWORD dwCertEncodingType,
__TRY { + struct AsnArrayDescriptor arrayDesc = { ASN_CONSTRUCTOR | ASN_SETOF, + CRYPT_AsnDecodePKCSAttributeInternal, sizeof(CRYPT_ATTRIBUTE), TRUE, + offsetof(CRYPT_ATTRIBUTE, pszObjId) }; DWORD bytesNeeded;
- if (pbEncoded[0] != (ASN_CONSTRUCTOR | ASN_SETOF)) - SetLastError(CRYPT_E_ASN1_CORRUPT); - else if ((ret = CRYPT_AsnDecodePKCSAttributesInternal(pbEncoded, - cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, &bytesNeeded, - NULL))) + if ((ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc, pbEncoded, + cbEncoded, NULL, NULL, &bytesNeeded, NULL))) { + bytesNeeded += sizeof(CRYPT_ATTRIBUTES); if (!pvStructInfo) *pcbStructInfo = bytesNeeded; else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags, pDecodePara, @@ -3155,9 +3156,8 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSAttributes(DWORD dwCertEncodingType, attrs = pvStructInfo; attrs->rgAttr = (PCRYPT_ATTRIBUTE)((BYTE *)pvStructInfo + sizeof(CRYPT_ATTRIBUTES)); - ret = CRYPT_AsnDecodePKCSAttributesInternal(pbEncoded, - cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, - &bytesNeeded, NULL); + ret = CRYPT_AsnDecodeArrayNoAlloc(&arrayDesc, pbEncoded, + cbEncoded, &attrs->cAttr, attrs->rgAttr, &bytesNeeded, NULL); } } }