diff options
author | Jon Simons <jon@jonsimons.org> | 2017-07-10 17:20:42 -0400 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2017-07-13 19:29:44 +0200 |
commit | a64ddff3fe16f938b99130d2a4928cda33cfcd36 (patch) | |
tree | c737cc7d655ccca99b1eec123157f53ffddc35a6 /src | |
parent | 25384e9558c2e79086340a4551d90c08c6efae82 (diff) | |
download | libssh-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/libcrypto.c | 3 |
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 |