Juan Lang : crypt32: Fix duplicating a NULL CRL context.

Alexandre Julliard julliard at winehq.org
Wed Oct 21 13:13:58 CDT 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Tue Oct 20 09:52:36 2009 -0700

crypt32: Fix duplicating a NULL CRL context.

---

 dlls/crypt32/crl.c       |    3 ++-
 dlls/crypt32/tests/crl.c |   16 ++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/dlls/crypt32/crl.c b/dlls/crypt32/crl.c
index 271e4e0..80fe86f 100644
--- a/dlls/crypt32/crl.c
+++ b/dlls/crypt32/crl.c
@@ -228,7 +228,8 @@ PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore,
 PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext)
 {
     TRACE("(%p)\n", pCrlContext);
-    Context_AddRef((void *)pCrlContext, sizeof(CRL_CONTEXT));
+    if (pCrlContext)
+        Context_AddRef((void *)pCrlContext, sizeof(CRL_CONTEXT));
     return pCrlContext;
 }
 
diff --git a/dlls/crypt32/tests/crl.c b/dlls/crypt32/tests/crl.c
index abd8491..1b8cb18 100644
--- a/dlls/crypt32/tests/crl.c
+++ b/dlls/crypt32/tests/crl.c
@@ -118,6 +118,21 @@ static void testCreateCRL(void)
         CertFreeCRLContext(context);
 }
 
+static void testDupCRL(void)
+{
+    PCCRL_CONTEXT context, dupContext;
+
+    context = CertDuplicateCRLContext(NULL);
+    ok(context == NULL, "expected NULL\n");
+    context = CertCreateCRLContext(X509_ASN_ENCODING, signedCRL,
+     sizeof(signedCRL));
+    dupContext = CertDuplicateCRLContext(context);
+    ok(dupContext != NULL, "expected a context\n");
+    ok(dupContext == context, "expected identical context addresses\n");
+    CertFreeCRLContext(dupContext);
+    CertFreeCRLContext(context);
+}
+
 static void testAddCRL(void)
 {
     HCERTSTORE store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0,
@@ -722,6 +737,7 @@ START_TEST(crl)
     init_function_pointers();
 
     testCreateCRL();
+    testDupCRL();
     testAddCRL();
     testFindCRL();
     testGetCRLFromStore();




More information about the wine-cvs mailing list