diff options
author | jsing <> | 2018-02-08 08:04:12 +0000 |
---|---|---|
committer | jsing <> | 2018-02-08 08:04:12 +0000 |
commit | 7bf93eac51d305e9043052877724278744c4a238 (patch) | |
tree | 7eae52d6bdaf9e92b19a2abe81675a5b75bc8e30 | |
parent | cdd740831dedac070dd7649c9e844f6a52e60eb2 (diff) | |
download | openbsd-7bf93eac51d305e9043052877724278744c4a238.tar.gz openbsd-7bf93eac51d305e9043052877724278744c4a238.tar.bz2 openbsd-7bf93eac51d305e9043052877724278744c4a238.zip |
Avoid a memory leak that results when the same tls_config is reused.
Reported by and fix from Nate Bessette <openbsd at nate dot sh> - thanks.
-rw-r--r-- | src/lib/libtls/tls.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index f07c4c6deb..95fdb8bc4b 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.71 2017/09/20 17:05:17 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.72 2018/02/08 08:04:12 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -269,7 +269,9 @@ tls_cert_hash(X509 *cert, char **hash) | |||
269 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; | 269 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; |
270 | int dlen, rv = -1; | 270 | int dlen, rv = -1; |
271 | 271 | ||
272 | free(*hash); | ||
272 | *hash = NULL; | 273 | *hash = NULL; |
274 | |||
273 | if (X509_digest(cert, EVP_sha256(), d, &dlen) != 1) | 275 | if (X509_digest(cert, EVP_sha256(), d, &dlen) != 1) |
274 | goto err; | 276 | goto err; |
275 | 277 | ||
@@ -296,6 +298,7 @@ tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | |||
296 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; | 298 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; |
297 | int dlen, rv = -1; | 299 | int dlen, rv = -1; |
298 | 300 | ||
301 | free(*hash); | ||
299 | *hash = NULL; | 302 | *hash = NULL; |
300 | 303 | ||
301 | if ((membio = BIO_new_mem_buf(keypair->cert_mem, | 304 | if ((membio = BIO_new_mem_buf(keypair->cert_mem, |