summaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorJohn Brooks <john.brooks@dereferenced.net>2015-04-13 21:35:40 -0600
committerJohn Brooks <special@torproject.org>2016-05-09 13:53:24 -0400
commite7ff23beea6f415f661821bdefda8b1df3deb7a6 (patch)
tree710164995438b5019038e734e2287321e42af94d /src/or
parent896271d525b2b31950572293c512224ca57cee02 (diff)
downloadtor-e7ff23beea6f415f661821bdefda8b1df3deb7a6.tar.gz
tor-e7ff23beea6f415f661821bdefda8b1df3deb7a6.zip
Make rend_authorized_client_free public
This is needed by control.c. Also, check whether client_name is set before doing memwipe.
Diffstat (limited to 'src/or')
-rw-r--r--src/or/rendservice.c5
-rw-r--r--src/or/rendservice.h2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 22a01c9d32..fbc228ae3c 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -183,14 +183,15 @@ num_rend_services(void)
}
/** Helper: free storage held by a single service authorized client entry. */
-static void
+void
rend_authorized_client_free(rend_authorized_client_t *client)
{
if (!client)
return;
if (client->client_key)
crypto_pk_free(client->client_key);
- memwipe(client->client_name, 0, strlen(client->client_name));
+ if (client->client_name)
+ memwipe(client->client_name, 0, strlen(client->client_name));
tor_free(client->client_name);
memwipe(client->descriptor_cookie, 0, sizeof(client->descriptor_cookie));
tor_free(client);
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index a16a99cf88..2bb0c6aa88 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -106,6 +106,8 @@ rend_service_port_config_t *rend_service_parse_port_config(const char *string,
char **err_msg_out);
void rend_service_port_config_free(rend_service_port_config_t *p);
+void rend_authorized_client_free(rend_authorized_client_t *client);
+
/** Return value from rend_service_add_ephemeral. */
typedef enum {
RSAE_BADVIRTPORT = -4, /**< Invalid VIRTPORT/TARGET(s) */