summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2015-05-05 11:08:05 -0400
committerNick Mathewson <nickm@torproject.org>2015-05-05 11:08:05 -0400
commitf61088ce2321be7c408b4298258a268a0a546e78 (patch)
tree44ca43147a06222429fe3a5eadd1a81ace082e17
parent72c4a4eb03d6d1be1de2701b4c2c2703bfbca699 (diff)
downloadtor-f61088ce2321be7c408b4298258a268a0a546e78.tar.gz
tor-f61088ce2321be7c408b4298258a268a0a546e78.zip
Fix a few more memory leaks; not in any released Tor
-rw-r--r--src/or/control.c7
-rw-r--r--src/test/test_controller.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/or/control.c b/src/or/control.c
index ebe385923a..780dea58e0 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3779,12 +3779,17 @@ add_onion_helper_keyarg(const char *arg, int discard_pk,
memwipe(cp, 0, strlen(cp));
tor_free(cp);
});
+ smartlist_free(key_args);
if (!ok) {
crypto_pk_free(pk);
pk = NULL;
}
- if (err_msg_out) *err_msg_out = err_msg;
+ if (err_msg_out) {
+ *err_msg_out = err_msg;
+ } else {
+ tor_free(err_msg);
+ }
*key_new_alg_out = key_new_alg;
*key_new_blob_out = key_new_blob;
diff --git a/src/test/test_controller.c b/src/test/test_controller.c
index 9039dc7677..b40825bb5d 100644
--- a/src/test/test_controller.c
+++ b/src/test/test_controller.c
@@ -72,6 +72,7 @@ test_add_onion_helper_keyarg(void *arg)
/* Test loading a invalid key type. */
tor_free(arg_str);
+ crypto_pk_free(pk); pk = NULL;
tor_asprintf(&arg_str, "RSA512:%s", encoded);
pk = add_onion_helper_keyarg(arg_str, 0, &key_new_alg, &key_new_blob,
&err_msg);
@@ -82,6 +83,7 @@ test_add_onion_helper_keyarg(void *arg)
/* Test loading a invalid key. */
tor_free(arg_str);
+ crypto_pk_free(pk); pk = NULL;
tor_free(err_msg);
encoded[strlen(encoded)/2] = '\0';
tor_asprintf(&arg_str, "RSA1024:%s", encoded);