[PATCH v2 2/2] rsaenh: Properly destroy hashes created by CPCreateHash() (Valgrind).
Sven Baars
sbaars at codeweavers.com
Mon Feb 14 06:51:13 CST 2022
Signed-off-by: Sven Baars <sbaars at 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);
--
2.30.0.335.ge6362826a0
More information about the wine-devel
mailing list