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(); }