[PATCH 0/1] MR10530: crypt32: Add CERT_STORE_NO_CRYPT_RELEASE_FLAG to CertOpenStore() flags when called from CertOpenSystemStore().
From: Dmitry Timoshkov <dmitry@baikal.ru> This prevents closing a not owned provider handle. Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> --- dlls/crypt32/store.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index 54b16ab8fa1..ac17a3d4768 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -948,7 +948,7 @@ HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, return 0; } return CertOpenStore(CERT_STORE_PROV_SYSTEM_A, 0, hProv, - CERT_SYSTEM_STORE_CURRENT_USER, szSubSystemProtocol); + CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_NO_CRYPT_RELEASE_FLAG, szSubSystemProtocol); } HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, @@ -960,7 +960,7 @@ HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, return 0; } return CertOpenStore(CERT_STORE_PROV_SYSTEM_W, 0, hProv, - CERT_SYSTEM_STORE_CURRENT_USER, szSubSystemProtocol); + CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_NO_CRYPT_RELEASE_FLAG, szSubSystemProtocol); } PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrev) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10530
Hans Leidekker (@hans) commented about dlls/crypt32/store.c:
return 0; } return CertOpenStore(CERT_STORE_PROV_SYSTEM_A, 0, hProv, - CERT_SYSTEM_STORE_CURRENT_USER, szSubSystemProtocol); + CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_NO_CRYPT_RELEASE_FLAG, szSubSystemProtocol);
Can we test this? Maybe call CryptReleaseContext() and check the return value / last error? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10530#note_134619
participants (3)
-
Dmitry Timoshkov -
Dmitry Timoshkov (@dmitry) -
Hans Leidekker (@hans)