Juan Lang : crypt32: Don't fail if a cert is invalid, Windows doesn' t either (tests to follow).

Alexandre Julliard julliard at winehq.org
Fri Oct 5 04:55:58 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Oct  4 14:56:04 2007 -0700

crypt32: Don't fail if a cert is invalid, Windows doesn't either (tests to follow).

---

 dlls/crypt32/cert.c |   48 +++++++++++++++++++++++-------------------------
 1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c
index 13ef4d4..84d466a 100644
--- a/dlls/crypt32/cert.c
+++ b/dlls/crypt32/cert.c
@@ -1933,7 +1933,7 @@ BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
     TRACE("(%d, %p, %d, %p, %d)\n", cCerts, rghCerts, *cNumOIDs,
      rghOIDs, *pcbOIDs);
 
-    for (i = 0; ret && i < cCerts; i++)
+    for (i = 0; i < cCerts; i++)
     {
         CERT_ENHKEY_USAGE usage;
         DWORD size = sizeof(usage);
@@ -2028,36 +2028,34 @@ BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
                 ret = FALSE;
         }
     }
-    if (ret)
+    ret = TRUE;
+    if (allUsagesValid)
+    {
+        *cNumOIDs = -1;
+        *pcbOIDs = 0;
+    }
+    else
     {
-        if (allUsagesValid)
+        if (!rghOIDs)
+            *pcbOIDs = cbOIDs;
+        else if (*pcbOIDs < cbOIDs)
         {
-            *cNumOIDs = -1;
-            *pcbOIDs = 0;
+            *pcbOIDs = cbOIDs;
+            SetLastError(ERROR_MORE_DATA);
+            ret = FALSE;
         }
         else
         {
-            if (!rghOIDs)
-                *pcbOIDs = cbOIDs;
-            else if (*pcbOIDs < cbOIDs)
-            {
-                *pcbOIDs = cbOIDs;
-                SetLastError(ERROR_MORE_DATA);
-                ret = FALSE;
-            }
-            else
-            {
-                LPSTR nextOID = (LPSTR)((LPBYTE)rghOIDs +
-                 validUsages.cUsageIdentifier * sizeof(LPSTR));
+            LPSTR nextOID = (LPSTR)((LPBYTE)rghOIDs +
+             validUsages.cUsageIdentifier * sizeof(LPSTR));
 
-                *pcbOIDs = cbOIDs;
-                *cNumOIDs = validUsages.cUsageIdentifier;
-                for (i = 0; i < validUsages.cUsageIdentifier; i++)
-                {
-                    rghOIDs[i] = nextOID;
-                    lstrcpyA(nextOID, validUsages.rgpszUsageIdentifier[i]);
-                    nextOID += lstrlenA(nextOID) + 1;
-                }
+            *pcbOIDs = cbOIDs;
+            *cNumOIDs = validUsages.cUsageIdentifier;
+            for (i = 0; i < validUsages.cUsageIdentifier; i++)
+            {
+                rghOIDs[i] = nextOID;
+                lstrcpyA(nextOID, validUsages.rgpszUsageIdentifier[i]);
+                nextOID += lstrlenA(nextOID) + 1;
             }
         }
     }




More information about the wine-cvs mailing list