Juan Lang : crypt32: Simplify AsnDecodeSequenceItems a tiny bit.

Alexandre Julliard julliard at winehq.org
Tue Sep 18 05:31:32 CDT 2007


Module: wine
Branch: master
Commit: f534a67bfc59d3b8b74d69cfcc4e60411f293104
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f534a67bfc59d3b8b74d69cfcc4e60411f293104

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep 17 17:27:12 2007 -0700

crypt32: Simplify AsnDecodeSequenceItems a tiny bit.

---

 dlls/crypt32/decode.c |   42 +++++++++++++++++++++---------------------
 1 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index 0de2e6a..1e63183 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -308,15 +308,21 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[],
     {
         if (cbEncoded - (ptr - pbEncoded) != 0)
         {
-            DWORD nextItemLen;
+            DWORD itemLen;
 
             if ((ret = CRYPT_GetLengthIndefinite(ptr,
-             cbEncoded - (ptr - pbEncoded), &nextItemLen)))
+             cbEncoded - (ptr - pbEncoded), &itemLen)))
             {
-                BYTE nextItemLenBytes = GET_LEN_BYTES(ptr[1]);
+                BYTE itemLenBytes = GET_LEN_BYTES(ptr[1]);
 
                 if (ptr[0] == items[i].tag || !items[i].tag)
                 {
+                    DWORD itemEncodedLen;
+
+                    if (itemLen == CMSG_INDEFINITE_LENGTH)
+                        itemEncodedLen = cbEncoded - (ptr - pbEncoded);
+                    else
+                        itemEncodedLen = 1 + itemLenBytes + itemLen;
                     if (nextData && pvStructInfo && items[i].hasPointer)
                     {
                         TRACE("Setting next pointer to %p\n",
@@ -326,21 +332,16 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[],
                     }
                     if (items[i].decodeFunc)
                     {
-                        DWORD nextItemEncodedLen, nextItemDecoded;
+                        DWORD itemDecoded;
 
-                        if (nextItemLen == CMSG_INDEFINITE_LENGTH)
-                            nextItemEncodedLen = cbEncoded - (ptr - pbEncoded);
-                        else
-                            nextItemEncodedLen = 1 + nextItemLenBytes +
-                             nextItemLen;
                         if (pvStructInfo)
                             TRACE("decoding item %d\n", i);
                         else
                             TRACE("sizing item %d\n", i);
-                        ret = items[i].decodeFunc(ptr, nextItemEncodedLen,
+                        ret = items[i].decodeFunc(ptr, itemEncodedLen,
                          dwFlags & ~CRYPT_DECODE_ALLOC_FLAG,
                          pvStructInfo ?  (BYTE *)pvStructInfo + items[i].offset
-                         : NULL, &items[i].size, &nextItemDecoded);
+                         : NULL, &items[i].size, &itemDecoded);
                         if (ret)
                         {
                             /* Account for alignment padding */
@@ -351,19 +352,19 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[],
                             if (nextData && items[i].hasPointer &&
                              items[i].size > items[i].minSize)
                                 nextData += items[i].size - items[i].minSize;
-                            if (nextItemDecoded > nextItemEncodedLen)
+                            if (itemDecoded > itemEncodedLen)
                             {
                                 WARN("decoded length %d exceeds encoded %d\n",
-                                 nextItemDecoded, nextItemEncodedLen);
+                                 itemDecoded, itemEncodedLen);
                                 SetLastError(CRYPT_E_ASN1_CORRUPT);
                                 ret = FALSE;
                             }
                             else
                             {
-                                ptr += nextItemDecoded;
-                                decoded += nextItemDecoded;
+                                ptr += itemDecoded;
+                                decoded += itemDecoded;
                                 TRACE("item %d: decoded %d bytes\n", i,
-                                 nextItemDecoded);
+                                 itemDecoded);
                             }
                         }
                         else if (items[i].optional &&
@@ -378,7 +379,7 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[],
                             TRACE("item %d failed: %08x\n", i,
                              GetLastError());
                     }
-                    else if (nextItemLen == CMSG_INDEFINITE_LENGTH)
+                    else if (itemLen == CMSG_INDEFINITE_LENGTH)
                     {
                         ERR("can't use indefinite length encoding without a decoder\n");
                         SetLastError(CRYPT_E_ASN1_CORRUPT);
@@ -386,10 +387,9 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[],
                     }
                     else
                     {
-                        TRACE("item %d: decoded %d bytes\n", i,
-                         1 + nextItemLenBytes + nextItemLen);
-                        ptr += 1 + nextItemLenBytes + nextItemLen;
-                        decoded += 1 + nextItemLenBytes + nextItemLen;
+                        TRACE("item %d: decoded %d bytes\n", i, itemEncodedLen);
+                        ptr += itemEncodedLen;
+                        decoded += itemEncodedLen;
                         items[i].size = items[i].minSize;
                     }
                 }




More information about the wine-cvs mailing list