Juan Lang : crypt32: Include root store in CertEnumSystemStore enumeration for the local machine location .

Alexandre Julliard julliard at winehq.org
Mon Jan 19 08:58:37 CST 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Jan 16 07:49:30 2009 -0800

crypt32: Include root store in CertEnumSystemStore enumeration for the local machine location.

---

 dlls/crypt32/store.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c
index 602bd40..09c4acc 100644
--- a/dlls/crypt32/store.c
+++ b/dlls/crypt32/store.c
@@ -329,10 +329,11 @@ static WINECRYPT_CERTSTORE *CRYPT_MemOpenStore(HCRYPTPROV hCryptProv,
     return (PWINECRYPT_CERTSTORE)store;
 }
 
+static const WCHAR rootW[] = { 'R','o','o','t',0 };
+
 static PWINECRYPT_CERTSTORE CRYPT_SysRegOpenStoreW(HCRYPTPROV hCryptProv,
  DWORD dwFlags, const void *pvPara)
 {
-    static const WCHAR rootW[] = { 'R','o','o','t',0 };
     static const WCHAR fmt[] = { '%','s','\\','%','s',0 };
     LPCWSTR storeName = (LPCWSTR)pvPara;
     LPWSTR storePath;
@@ -1350,6 +1351,7 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara,
     BOOL ret = FALSE;
     LONG rc;
     HKEY key;
+    CERT_SYSTEM_STORE_INFO info = { sizeof(info) };
 
     TRACE("(%08x, %p, %p, %p)\n", dwFlags, pvSystemStoreLocationPara, pvArg,
         pfnEnum);
@@ -1358,7 +1360,6 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara,
     if (!rc)
     {
         DWORD index = 0;
-        CERT_SYSTEM_STORE_INFO info = { sizeof(info) };
 
         ret = TRUE;
         do {
@@ -1375,6 +1376,12 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara,
     }
     else
         SetLastError(rc);
+    /* Include root store for the local machine location (it isn't in the
+     * registry)
+     */
+    if (ret && (dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK) ==
+     CERT_SYSTEM_STORE_LOCAL_MACHINE)
+        ret = pfnEnum(rootW, dwFlags, &info, NULL, pvArg);
     return ret;
 }
 




More information about the wine-cvs mailing list