aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2017-07-10 17:20:42 -0400
committerAndreas Schneider <asn@cryptomilk.org>2017-07-13 19:29:44 +0200
commita64ddff3fe16f938b99130d2a4928cda33cfcd36 (patch)
treec737cc7d655ccca99b1eec123157f53ffddc35a6
parent25384e9558c2e79086340a4551d90c08c6efae82 (diff)
downloadlibssh-a64ddff3fe16f938b99130d2a4928cda33cfcd36.tar.gz
libssh-a64ddff3fe16f938b99130d2a4928cda33cfcd36.tar.xz
libssh-a64ddff3fe16f938b99130d2a4928cda33cfcd36.zip
libcrypto: fix resource leak in hmac_final
Fix a resource leak in `hmac_final`: say `HMAC_CTX_free` instead of `HMAC_CTX_reset`. This matches the error handling as done in `hmac_init`. Introduced with cf1e808e2ffa1f26644fb5d2cb82a919f323deba. The problem is reproducible running the `pkd_hello` test with: valgrind --leak-check=full ./pkd_hello -i1 -t torture_pkd_openssh_dsa_rsa_default Resolves https://red.libssh.org/issues/252. Signed-off-by: Jon Simons <jon@jonsimons.org> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r--src/libcrypto.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libcrypto.c b/src/libcrypto.c
index 867bf227..3bed5042 100644
--- a/src/libcrypto.c
+++ b/src/libcrypto.c
@@ -422,7 +422,8 @@ void hmac_final(HMACCTX ctx, unsigned char *hashmacbuf, unsigned int *len) {
HMAC_Final(ctx,hashmacbuf,len);
#ifndef OLD_CRYPTO
- HMAC_CTX_reset(ctx);
+ HMAC_CTX_free(ctx);
+ ctx = NULL;
#else
HMAC_cleanup(ctx);
#endif