diff options
-rw-r--r-- | changes/bug8716 | 3 | ||||
-rw-r--r-- | src/or/config.c | 3 | ||||
-rw-r--r-- | src/or/control.c | 2 | ||||
-rw-r--r-- | 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 0000000000..74c74f82a6 --- /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 20a3c20fb9..e86942cfe1 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -620,12 +620,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 390b8d1502..48782682c7 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -4393,7 +4393,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 0ea7941b13..61062da2c4 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -72,7 +72,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); |