Juan Lang : crypt32: Set bytes decoded in all success paths.

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


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep 17 16:05:06 2007 -0700

crypt32: Set bytes decoded in all success paths.

---

 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 67f79d5..7161058 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -457,6 +457,8 @@ static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType,
                     bytesNeeded += items[i].size;
                     structSize += items[i].minSize;
                 }
+                if (ret && pcbDecoded)
+                    *pcbDecoded = 1 + lenBytes + cbDecoded;
                 if (!pvStructInfo)
                     *pcbStructInfo = bytesNeeded;
                 else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags,
@@ -474,8 +476,6 @@ static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType,
                     ret = CRYPT_AsnDecodeSequenceItems(dwFlags, items, cItem,
                      ptr, cbEncoded, dwFlags, pvStructInfo, nextData,
                      &cbDecoded);
-                    if (ret && pcbDecoded)
-                        *pcbDecoded = 1 + lenBytes + cbDecoded;
                 }
             }
         }
@@ -601,6 +601,8 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc,
             }
             if (ret)
             {
+                if (pcbDecoded)
+                    *pcbDecoded = decoded;
                 if (!pvStructInfo)
                     *pcbStructInfo = bytesNeeded;
                 else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags,
@@ -611,8 +613,6 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc,
                     const BYTE *ptr;
                     struct GenericArray *array;
 
-                    if (pcbDecoded)
-                        *pcbDecoded = decoded;
                     if (dwFlags & CRYPT_DECODE_ALLOC_FLAG)
                         pvStructInfo = *(BYTE **)pvStructInfo;
                     array = (struct GenericArray *)pvStructInfo;
@@ -1157,6 +1157,8 @@ static BOOL CRYPT_AsnDecodeOidIgnoreTag(const BYTE *pbEncoded, DWORD cbEncoded,
                 }
             }
         }
+        if (pcbDecoded)
+            *pcbDecoded = 1 + lenBytes + dataLen;
         if (!pvStructInfo)
             *pcbStructInfo = bytesNeeded;
         else if (*pcbStructInfo < bytesNeeded)
@@ -1198,8 +1200,6 @@ static BOOL CRYPT_AsnDecodeOidIgnoreTag(const BYTE *pbEncoded, DWORD cbEncoded,
             else
                 *(LPSTR *)pvStructInfo = NULL;
             *pcbStructInfo = bytesNeeded;
-            if (pcbDecoded)
-                *pcbDecoded = 1 + lenBytes + dataLen;
         }
     }
     return ret;
@@ -1837,6 +1837,8 @@ static BOOL CRYPT_AsnDecodeCopyBytesInternal(const BYTE *pbEncoded,
 
     if (!(dwFlags & CRYPT_DECODE_NOCOPY_FLAG))
         bytesNeeded += cbEncoded;
+    if (pcbDecoded)
+        *pcbDecoded = cbEncoded;
     if (!pvStructInfo)
         *pcbStructInfo = bytesNeeded;
     else if (*pcbStructInfo < bytesNeeded)
@@ -1858,8 +1860,6 @@ static BOOL CRYPT_AsnDecodeCopyBytesInternal(const BYTE *pbEncoded,
             assert(blob->pbData);
             memcpy(blob->pbData, pbEncoded, blob->cbData);
         }
-        if (pcbDecoded)
-            *pcbDecoded = cbEncoded;
     }
     return ret;
 }




More information about the wine-cvs mailing list