From 7b1a3c51644891c4548ccdfd4e8d444cd91b91b0 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Wed, 20 Jun 2018 19:43:58 -0400 Subject: 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. --- src/or/protover.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/or/protover.c') diff --git a/src/or/protover.c b/src/or/protover.c index b2ec3372c9..5145881ba9 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 */ } /** -- cgit v1.2.3-54-g00ecf