From befce84f4c9d417253010ff6d270314ec4fff48d Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang@gmail.com>
Date: Sat, 24 Jan 2009 13:08:21 -0800
Subject: [PATCH] crypt32: Close file when appropriate in CertSaveStore.

---
 dlls/crypt32/serialize.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/crypt32/serialize.c b/dlls/crypt32/serialize.c
index af364413748..4548ce650eb 100644
--- a/dlls/crypt32/serialize.c
+++ b/dlls/crypt32/serialize.c
@@ -833,7 +833,7 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType,
 {
     BOOL (*saveFunc)(HCERTSTORE, DWORD, void *);
     void *handle;
-    BOOL ret;
+    BOOL ret, closeFile = TRUE;
 
     TRACE("(%p, %08x, %d, %d, %p, %08x)\n", hCertStore,
           dwMsgAndCertEncodingType, dwSaveAs, dwSaveTo, pvSaveToPara, dwFlags);
@@ -861,6 +861,7 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType,
     {
     case CERT_STORE_SAVE_TO_FILE:
         handle = pvSaveToPara;
+        closeFile = FALSE;
         break;
     case CERT_STORE_SAVE_TO_FILENAME_A:
         handle = CreateFileA((LPCSTR)pvSaveToPara, GENERIC_WRITE, 0, NULL,
@@ -879,6 +880,8 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType,
         return FALSE;
     }
     ret = saveFunc(hCertStore, dwMsgAndCertEncodingType, handle);
+    if (closeFile)
+        CloseHandle(handle);
     TRACE("returning %d\n", ret);
     return ret;
 }
-- 
GitLab