From f61088ce2321be7c408b4298258a268a0a546e78 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 5 May 2015 11:08:05 -0400 Subject: [PATCH] Fix a few more memory leaks; not in any released Tor --- src/or/control.c | 7 ++++++- src/test/test_controller.c | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) 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);