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