Juan Lang : crypt32: Don't ignore errors when encoding items in an array.

Alexandre Julliard julliard at winehq.org
Thu Aug 28 07:00:24 CDT 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Aug 27 11:02:13 2008 -0700

crypt32: Don't ignore errors when encoding items in an array.

---

 dlls/crypt32/encode.c |  118 ++++++++++++++++++++++++++----------------------
 1 files changed, 64 insertions(+), 54 deletions(-)

diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index 0bcdad8..addd718 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -578,27 +578,31 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLEntries(DWORD dwCertEncodingType,
         if (ret)
             dataLen += size;
     }
-    CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
-    bytesNeeded = 1 + lenBytes + dataLen;
-    if (!pbEncoded)
-        *pcbEncoded = bytesNeeded;
-    else
+    if (ret)
     {
-        if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
-         pcbEncoded, bytesNeeded)))
+        CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+        bytesNeeded = 1 + lenBytes + dataLen;
+        if (!pbEncoded)
+            *pcbEncoded = bytesNeeded;
+        else
         {
-            if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
-                pbEncoded = *(BYTE **)pbEncoded;
-            *pbEncoded++ = ASN_SEQUENCEOF;
-            CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
-            pbEncoded += lenBytes;
-            for (i = 0; i < cCRLEntry; i++)
+            if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
+             pcbEncoded, bytesNeeded)))
             {
-                DWORD size = dataLen;
+                if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+                    pbEncoded = *(BYTE **)pbEncoded;
+                *pbEncoded++ = ASN_SEQUENCEOF;
+                CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+                pbEncoded += lenBytes;
+                for (i = 0; i < cCRLEntry; i++)
+                {
+                    DWORD size = dataLen;
 
-                ret = CRYPT_AsnEncodeCRLEntry(&rgCRLEntry[i], pbEncoded, &size);
-                pbEncoded += size;
-                dataLen -= size;
+                    ret = CRYPT_AsnEncodeCRLEntry(&rgCRLEntry[i], pbEncoded,
+                     &size);
+                    pbEncoded += size;
+                    dataLen -= size;
+                }
             }
         }
     }
@@ -731,28 +735,31 @@ static BOOL WINAPI CRYPT_AsnEncodeExtensions(DWORD dwCertEncodingType,
             if (ret)
                 dataLen += size;
         }
-        CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
-        bytesNeeded = 1 + lenBytes + dataLen;
-        if (!pbEncoded)
-            *pcbEncoded = bytesNeeded;
-        else
+        if (ret)
         {
-            if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
-             pcbEncoded, bytesNeeded)))
+            CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+            bytesNeeded = 1 + lenBytes + dataLen;
+            if (!pbEncoded)
+                *pcbEncoded = bytesNeeded;
+            else
             {
-                if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
-                    pbEncoded = *(BYTE **)pbEncoded;
-                *pbEncoded++ = ASN_SEQUENCEOF;
-                CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
-                pbEncoded += lenBytes;
-                for (i = 0; i < exts->cExtension; i++)
+                if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara,
+                 pbEncoded, pcbEncoded, bytesNeeded)))
                 {
-                    DWORD size = dataLen;
+                    if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+                        pbEncoded = *(BYTE **)pbEncoded;
+                    *pbEncoded++ = ASN_SEQUENCEOF;
+                    CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+                    pbEncoded += lenBytes;
+                    for (i = 0; i < exts->cExtension; i++)
+                    {
+                        DWORD size = dataLen;
 
-                    ret = CRYPT_AsnEncodeExtension(&exts->rgExtension[i],
-                     pbEncoded, &size);
-                    pbEncoded += size;
-                    dataLen -= size;
+                        ret = CRYPT_AsnEncodeExtension(&exts->rgExtension[i],
+                         pbEncoded, &size);
+                        pbEncoded += size;
+                        dataLen -= size;
+                    }
                 }
             }
         }
@@ -1459,29 +1466,32 @@ static BOOL WINAPI CRYPT_AsnEncodeSMIMECapabilities(DWORD dwCertEncodingType,
             if (ret)
                 dataLen += size;
         }
-        CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
-        bytesNeeded = 1 + lenBytes + dataLen;
-        if (!pbEncoded)
-            *pcbEncoded = bytesNeeded;
-        else
+        if (ret)
         {
-            if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
-             pcbEncoded, bytesNeeded)))
+            CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+            bytesNeeded = 1 + lenBytes + dataLen;
+            if (!pbEncoded)
+                *pcbEncoded = bytesNeeded;
+            else
             {
-                if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
-                    pbEncoded = *(BYTE **)pbEncoded;
-                *pbEncoded++ = ASN_SEQUENCEOF;
-                CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
-                pbEncoded += lenBytes;
-                for (i = 0; i < capabilities->cCapability; i++)
+                if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara,
+                 pbEncoded, pcbEncoded, bytesNeeded)))
                 {
-                    DWORD size = dataLen;
+                    if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+                        pbEncoded = *(BYTE **)pbEncoded;
+                    *pbEncoded++ = ASN_SEQUENCEOF;
+                    CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+                    pbEncoded += lenBytes;
+                    for (i = 0; i < capabilities->cCapability; i++)
+                    {
+                        DWORD size = dataLen;
 
-                    ret = CRYPT_AsnEncodeSMIMECapability(dwCertEncodingType,
-                     NULL, &capabilities->rgCapability[i], 0, NULL, pbEncoded,
-                     &size);
-                    pbEncoded += size;
-                    dataLen -= size;
+                        ret = CRYPT_AsnEncodeSMIMECapability(dwCertEncodingType,
+                         NULL, &capabilities->rgCapability[i], 0, NULL,
+                         pbEncoded, &size);
+                        pbEncoded += size;
+                        dataLen -= size;
+                    }
                 }
             }
         }




More information about the wine-cvs mailing list