commit 0a9c17a61ad7193a051c53ea2a0cb91e012f014e Author: Nick Mathewson nickm@torproject.org Date: Wed Apr 17 11:34:15 2013 -0400
Fix memory leak when sending configuration-changed event
Fix for bug #8718; bugfix on 0.2.3.3-alpha. --- changes/bug8716 | 3 +++ src/or/config.c | 3 ++- src/or/control.c | 2 +- src/or/control.h | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/changes/bug8716 b/changes/bug8716 new file mode 100644 index 0000000..74c74f8 --- /dev/null +++ b/changes/bug8716 @@ -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. diff --git a/src/or/config.c b/src/or/config.c index 16eadf9..236955b 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -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); }
diff --git a/src/or/control.c b/src/or/control.c index fc7bae2..417f6c6 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -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; diff --git a/src/or/control.h b/src/or/control.h index f301ce9..943d67e 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -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);
tor-commits@lists.torproject.org