summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-11-03 15:40:56 -0400
committerNick Mathewson <nickm@torproject.org>2016-11-03 15:40:56 -0400
commit6520ef5478731ef9a2a38d274f0840d9c26598ba (patch)
treec57f584f670762e7fcf0b8b565664df126c6e20a
parentbadc444f7adce748fd4c4171a3748fc08f001022 (diff)
parent9b18b215bb34c4df1b94dec218c68a532c341e26 (diff)
downloadtor-6520ef5478731ef9a2a38d274f0840d9c26598ba.tar.gz
tor-6520ef5478731ef9a2a38d274f0840d9c26598ba.zip
Merge branch 'maint-0.2.8' into release-0.2.8
-rw-r--r--changes/bug205533
-rw-r--r--src/common/crypto.c5
-rw-r--r--src/tools/tor-gencert.c5
3 files changed, 7 insertions, 6 deletions
diff --git a/changes/bug20553 b/changes/bug20553
new file mode 100644
index 0000000000..12a2780303
--- /dev/null
+++ b/changes/bug20553
@@ -0,0 +1,3 @@
+ o Minor bugfixes (memory leak):
+ - Work around a memory leak in OpenSSL 1.1 when encoding public keys.
+ Fixes bug 20553; bugfix on 0.0.2pre8.
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 2b96324d33..c5d07dfb61 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -755,14 +755,13 @@ crypto_pk_write_key_to_string_impl(crypto_pk_t *env, char **dest,
}
BIO_get_mem_ptr(b, &buf);
- (void)BIO_set_close(b, BIO_NOCLOSE); /* so BIO_free doesn't free buf */
- BIO_free(b);
*dest = tor_malloc(buf->length+1);
memcpy(*dest, buf->data, buf->length);
(*dest)[buf->length] = 0; /* nul terminate it */
*len = buf->length;
- BUF_MEM_free(buf);
+
+ BIO_free(b);
return 0;
}
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index 5f2cd3a92d..ed6c0667a1 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -429,12 +429,11 @@ key_to_string(EVP_PKEY *key)
}
BIO_get_mem_ptr(b, &buf);
- (void) BIO_set_close(b, BIO_NOCLOSE);
- BIO_free(b);
result = tor_malloc(buf->length + 1);
memcpy(result, buf->data, buf->length);
result[buf->length] = 0;
- BUF_MEM_free(buf);
+
+ BIO_free(b);
RSA_free(rsa);
return result;