diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index 6be49bcaae2..6891f199308 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -93,13 +93,6 @@ typedef struct _WINE_MEMSTORE struct ContextList *crls; } WINE_MEMSTORE, *PWINE_MEMSTORE; -typedef struct _WINE_MSGSTOREINFO -{ - DWORD dwOpenFlags; - HCERTSTORE memStore; - HCRYPTMSG msg; -} WINE_MSGSTOREINFO, *PWINE_MSGSTOREINFO; - void CRYPT_InitStore(WINECRYPT_CERTSTORE *store, DWORD dwFlags, CertStoreType type) { @@ -528,12 +521,10 @@ static PWINECRYPT_CERTSTORE CRYPT_SysOpenStoreA(HCRYPTPROV hCryptProv, static void WINAPI CRYPT_MsgCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - PWINE_MSGSTOREINFO store = (PWINE_MSGSTOREINFO)hCertStore; + HCRYPTMSG msg = (HCRYPTMSG)hCertStore; - TRACE("(%p, %08x)\n", store, dwFlags); - CertCloseStore(store->memStore, dwFlags); - CryptMsgClose(store->msg); - CryptMemFree(store); + TRACE("(%p, %08x)\n", msg, dwFlags); + CryptMsgClose(msg); } static void *msgProvFuncs[] = { @@ -613,28 +604,17 @@ static PWINECRYPT_CERTSTORE CRYPT_MsgOpenStore(HCRYPTPROV hCryptProv, } if (ret) { - PWINE_MSGSTOREINFO info = CryptMemAlloc(sizeof(WINE_MSGSTOREINFO)); + CERT_STORE_PROV_INFO provInfo = { 0 }; - if (info) - { - CERT_STORE_PROV_INFO provInfo = { 0 }; - - info->dwOpenFlags = dwFlags; - info->memStore = memStore; - info->msg = CryptMsgDuplicate(msg); - provInfo.cbSize = sizeof(provInfo); - provInfo.cStoreProvFunc = sizeof(msgProvFuncs) / - sizeof(msgProvFuncs[0]); - provInfo.rgpvStoreProvFunc = msgProvFuncs; - provInfo.hStoreProv = info; - store = CRYPT_ProvCreateStore(dwFlags, memStore, - &provInfo); - /* Msg store doesn't need crypto provider, so close it */ - if (hCryptProv && !(dwFlags & CERT_STORE_NO_CRYPT_RELEASE_FLAG)) - CryptReleaseContext(hCryptProv, 0); - } - else - CertCloseStore(memStore, 0); + provInfo.cbSize = sizeof(provInfo); + provInfo.cStoreProvFunc = sizeof(msgProvFuncs) / + sizeof(msgProvFuncs[0]); + provInfo.rgpvStoreProvFunc = msgProvFuncs; + provInfo.hStoreProv = CryptMsgDuplicate(msg); + store = CRYPT_ProvCreateStore(dwFlags, memStore, &provInfo); + /* Msg store doesn't need crypto provider, so close it */ + if (hCryptProv && !(dwFlags & CERT_STORE_NO_CRYPT_RELEASE_FLAG)) + CryptReleaseContext(hCryptProv, 0); } else CertCloseStore(memStore, 0);