From 8218518695ed8378aed4dd08953f708b9e29b06d Mon Sep 17 00:00:00 2001 From: Paul Vriens Date: Thu, 29 Jan 2009 13:32:59 +0100 Subject: [PATCH] crypt32: Fix CertDuplicateCertificateContext for a passed NULL context. --- dlls/crypt32/cert.c | 4 ++++ dlls/crypt32/tests/cert.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index c6775561254..2780cba6343 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -115,6 +115,10 @@ PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext( PCCERT_CONTEXT pCertContext) { TRACE("(%p)\n", pCertContext); + + if (!pCertContext) + return NULL; + Context_AddRef((void *)pCertContext, sizeof(CERT_CONTEXT)); return pCertContext; } diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index e66b62101bc..844fd28903b 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -3136,6 +3136,16 @@ static void testGetPublicKeyLength(void) ok(ret == 56, "Expected length 56, got %d\n", ret); } +static void testCertDuplicateCertificateContext(void) +{ + PCCERT_CONTEXT context; + + SetLastError(0xdeadbeef); + context = CertDuplicateCertificateContext(NULL); + ok(context == NULL, "Expected context to be NULL\n"); +} + + START_TEST(cert) { init_function_pointers(); @@ -3163,4 +3173,5 @@ START_TEST(cert) testVerifyRevocation(); testAcquireCertPrivateKey(); testGetPublicKeyLength(); + testCertDuplicateCertificateContext(); }