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.
--- /dev/null
+ 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.
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 */
}
/**