mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
prop224: Add a clear configuration function
The added function frees any allocated pointers in a service configuration object and reset all values to 0. Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
+18
-6
@@ -149,6 +149,23 @@ set_service_default_config(hs_service_config_t *c,
|
||||
c->is_ephemeral = 0;
|
||||
}
|
||||
|
||||
/* From a service configuration object config, clear everything from it
|
||||
* meaning free allocated pointers and reset the values. */
|
||||
static void
|
||||
service_clear_config(hs_service_config_t *config)
|
||||
{
|
||||
if (config == NULL) {
|
||||
return;
|
||||
}
|
||||
tor_free(config->directory_path);
|
||||
if (config->ports) {
|
||||
SMARTLIST_FOREACH(config->ports, rend_service_port_config_t *, p,
|
||||
rend_service_port_config_free(p););
|
||||
smartlist_free(config->ports);
|
||||
}
|
||||
memset(config, 0, sizeof(*config));
|
||||
}
|
||||
|
||||
/* Helper: Function that needs to return 1 for the HT for each loop which
|
||||
* frees every service in an hash map. */
|
||||
static int
|
||||
@@ -592,12 +609,7 @@ hs_service_free(hs_service_t *service)
|
||||
}
|
||||
|
||||
/* Free service configuration. */
|
||||
tor_free(service->config.directory_path);
|
||||
if (service->config.ports) {
|
||||
SMARTLIST_FOREACH(service->config.ports, rend_service_port_config_t *, p,
|
||||
rend_service_port_config_free(p););
|
||||
smartlist_free(service->config.ports);
|
||||
}
|
||||
service_clear_config(&service->config);
|
||||
|
||||
/* Wipe service keys. */
|
||||
memwipe(&service->keys.identity_sk, 0, sizeof(service->keys.identity_sk));
|
||||
|
||||
Reference in New Issue
Block a user