Fix memory leak when sending configuration-changed event

Fix for bug #8718; bugfix on 0.2.3.3-alpha.
This commit is contained in:
Nick Mathewson 2013-04-17 11:34:15 -04:00
parent afca9ab14e
commit 0a9c17a61a
4 changed files with 7 additions and 3 deletions

3
changes/bug8716 Normal file
View File

@ -0,0 +1,3 @@
o Minor bugfixes (memory leak):
- Fix a memory leak that would occur whenever a configuration
option changed. Fixes bug #8718; bugfix on 0.2.3.3-alpha.

View File

@ -785,12 +785,13 @@ set_options(or_options_t *new_val, char **msg)
tor_free(line);
}
} else {
smartlist_add(elements, (char*)options_format.vars[i].name);
smartlist_add(elements, tor_strdup(options_format.vars[i].name));
smartlist_add(elements, NULL);
}
}
}
control_event_conf_changed(elements);
SMARTLIST_FOREACH(elements, char *, cp, tor_free(cp));
smartlist_free(elements);
}

View File

@ -4347,7 +4347,7 @@ control_event_guard(const char *nickname, const char *digest,
* a smartlist_t containing (key, value, ...) pairs in sequence.
* <b>value</b> can be NULL. */
int
control_event_conf_changed(smartlist_t *elements)
control_event_conf_changed(const smartlist_t *elements)
{
int i;
char *result;

View File

@ -71,7 +71,7 @@ int control_event_server_status(int severity, const char *format, ...)
CHECK_PRINTF(2,3);
int control_event_guard(const char *nickname, const char *digest,
const char *status);
int control_event_conf_changed(smartlist_t *elements);
int control_event_conf_changed(const smartlist_t *elements);
int control_event_buildtimeout_set(const circuit_build_times_t *cbt,
buildtimeout_set_event_t type);
int control_event_signal(uintptr_t signal);