Juan Lang : crypt32: Simplify CRYPT_AsnDecodePKCSAttributes.
Alexandre Julliard
julliard at winehq.org
Thu Oct 15 08:54:33 CDT 2009
Module: wine
Branch: master
Commit: 77cfb32360801e11b5e631e8fca7db397cc6e5ff
URL: http://source.winehq.org/git/wine.git/?a=commit;h=77cfb32360801e11b5e631e8fca7db397cc6e5ff
Author: Juan Lang <juan.lang at 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);
}
}
}
More information about the wine-cvs
mailing list