Signed-off-by: Sven Baars sbaars@codeweavers.com --- dlls/rsaenh/rsaenh.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index c913c0c71ee..a10559bb7b2 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -594,13 +594,16 @@ static BOOL copy_hmac_info(PHMAC_INFO *dst, const HMAC_INFO *src) { * Destructor for hash objects * * PARAMS - * pCryptHash [I] Pointer to the hash object to be destroyed. + * pCryptHash [I] Pointer to the hash object to be destroyed. * Will be invalid after function returns! */ static void destroy_hash(OBJECTHDR *pObject) { CRYPTHASH *pCryptHash = (CRYPTHASH*)pObject; - + + if (pCryptHash->hash_handle) + BCryptDestroyHash(pCryptHash->hash_handle); + free_hmac_info(pCryptHash->pHMACInfo); free_data_blob(&pCryptHash->tpPRFParams.blobLabel); free_data_blob(&pCryptHash->tpPRFParams.blobSeed); @@ -2211,6 +2214,7 @@ BOOL WINAPI RSAENH_CPCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, pCryptHash->hProv = hProv; pCryptHash->dwState = RSAENH_HASHSTATE_HASHING; pCryptHash->pHMACInfo = NULL; + pCryptHash->hash_handle = NULL; pCryptHash->dwHashSize = peaAlgidInfo->dwDefaultLen >> 3; init_data_blob(&pCryptHash->tpPRFParams.blobLabel); init_data_blob(&pCryptHash->tpPRFParams.blobSeed);