fix memory leak in protover.c

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 in the live network due
to out-of-memory issues.

Fixes bug 26435; bugfix on 0.3.3.6.
This commit is contained in:
Roger Dingledine 2018-06-20 19:43:58 -04:00
parent a360bf287d
commit 7b1a3c5164
2 changed files with 11 additions and 3 deletions

5
changes/bug26435 Normal file
View file

@ -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.

View file

@ -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 */
}
/**