Juan Lang : wininet: Return error directly from netconn_verify_cert.

Alexandre Julliard julliard at winehq.org
Wed Dec 16 09:41:29 CST 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Dec 14 15:58:44 2009 -0800

wininet: Return error directly from netconn_verify_cert.

---

 dlls/wininet/netconnection.c |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index 39ef464..f897570 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -210,7 +210,7 @@ static PCCERT_CONTEXT X509_to_cert_context(X509 *cert)
     return ret;
 }
 
-static BOOL netconn_verify_cert(PCCERT_CONTEXT cert, HCERTSTORE store,
+static DWORD netconn_verify_cert(PCCERT_CONTEXT cert, HCERTSTORE store,
     WCHAR *server)
 {
     BOOL ret;
@@ -218,7 +218,7 @@ static BOOL netconn_verify_cert(PCCERT_CONTEXT cert, HCERTSTORE store,
     PCCERT_CHAIN_CONTEXT chain;
     char oid_server_auth[] = szOID_PKIX_KP_SERVER_AUTH;
     char *server_auth[] = { oid_server_auth };
-    DWORD err;
+    DWORD err = ERROR_SUCCESS;
 
     TRACE("verifying %s\n", debugstr_w(server));
     chainPara.RequestedUsage.Usage.cUsageIdentifier = 1;
@@ -245,8 +245,6 @@ static BOOL netconn_verify_cert(PCCERT_CONTEXT cert, HCERTSTORE store,
                 err = ERROR_INTERNET_SEC_INVALID_CERT;
             else
                 err = ERROR_INTERNET_SEC_INVALID_CERT;
-            INTERNET_SetLastError(err);
-            ret = FALSE;
         }
         else
         {
@@ -271,14 +269,12 @@ static BOOL netconn_verify_cert(PCCERT_CONTEXT cert, HCERTSTORE store,
                     err = ERROR_INTERNET_SEC_CERT_CN_INVALID;
                 else
                     err = ERROR_INTERNET_SEC_INVALID_CERT;
-                INTERNET_SetLastError(err);
-                ret = FALSE;
             }
         }
         CertFreeCertificateChain(chain);
     }
-    TRACE("returning %d\n", ret);
-    return ret;
+    TRACE("returning %08x\n", err);
+    return err;
 }
 
 static int netconn_secure_verify(int preverify_ok, X509_STORE_CTX *ctx)
@@ -320,7 +316,15 @@ static int netconn_secure_verify(int preverify_ok, X509_STORE_CTX *ctx)
             }
             if (!endCert) ret = FALSE;
             if (ret)
-                ret = netconn_verify_cert(endCert, store, server);
+            {
+                DWORD err = netconn_verify_cert(endCert, store, server);
+
+                if (err)
+                {
+                    INTERNET_SetLastError(err);
+                    ret = FALSE;
+                }
+            }
             CertFreeCertificateContext(endCert);
             CertCloseStore(store, 0);
         }




More information about the wine-cvs mailing list