summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-06-21 08:36:48 -0400
committerNick Mathewson <nickm@torproject.org>2018-06-21 08:36:48 -0400
commitc389c4129252b49f7e5bd77e1be342cddbe388fb (patch)
treeba25ea323d89342a8fcf81970c4cbb24b9ce4f42
parent46dca273214147233808bcddb82c8bf76e8d6db5 (diff)
parent7b1a3c51644891c4548ccdfd4e8d444cd91b91b0 (diff)
downloadtor-c389c4129252b49f7e5bd77e1be342cddbe388fb.tar.gz
tor-c389c4129252b49f7e5bd77e1be342cddbe388fb.zip
Merge branch 'maint-0.3.3' into maint-0.3.4
-rw-r--r--changes/bug264355
-rw-r--r--src/or/protover.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/changes/bug26435 b/changes/bug26435
new file mode 100644
index 0000000000..c281949349
--- /dev/null
+++ b/changes/bug26435
@@ -0,0 +1,5 @@
+ o Major bugfixes:
+ - Fix a memory leak where directory authorities would leak a chunk
+ of memory for every router descriptor every time they considered
+ voting. This bug was taking down directory authorities due to
+ out-of-memory issues. Fixes bug 26435; bugfix on 0.3.3.6.
diff --git a/src/or/protover.c b/src/or/protover.c
index e4efe0a70b..0e8902196d 100644
--- a/src/or/protover.c
+++ b/src/or/protover.c
@@ -283,9 +283,12 @@ parse_protocol_list(const char *s)
bool
protover_contains_long_protocol_names(const char *s)
{
- if (!parse_protocol_list(s))
- return true;
- return false;
+ smartlist_t *list = parse_protocol_list(s);
+ if (!list)
+ return true; /* yes, has a dangerous name */
+ SMARTLIST_FOREACH(list, proto_entry_t *, ent, proto_entry_free(ent));
+ smartlist_free(list);
+ return false; /* no, looks fine */
}
/**