summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2018-02-08 08:04:12 +0000
committerjsing <>2018-02-08 08:04:12 +0000
commit7bf93eac51d305e9043052877724278744c4a238 (patch)
tree7eae52d6bdaf9e92b19a2abe81675a5b75bc8e30
parentcdd740831dedac070dd7649c9e844f6a52e60eb2 (diff)
downloadopenbsd-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.c5
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,