]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a memory leak when freeing routerstatuses with exit policy summaries. Patch...
authorNick Mathewson <nickm@torproject.org>
Mon, 25 Aug 2008 23:19:58 +0000 (23:19 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 25 Aug 2008 23:19:58 +0000 (23:19 +0000)
svn:r16659

src/or/networkstatus.c

index 5a2c72dc4b2464ff3cc9fab44ee9e2ea156f4c66..889c0e70c58ce41ec5e6311abdc7d83e0fbdca02 100644 (file)
@@ -233,10 +233,19 @@ router_reload_consensus_networkstatus(void)
   return 0;
 }
 
+static void
+vote_routerstatus_free(vote_routerstatus_t *rs)
+{
+  tor_free(rs->version);
+  tor_free(rs->status.exitsummary);
+  tor_free(rs);
+}
+
 /** Free all storage held by the routerstatus object <b>rs</b>. */
 void
 routerstatus_free(routerstatus_t *rs)
 {
+  tor_free(rs->exitsummary);
   tor_free(rs);
 }
 
@@ -292,13 +301,10 @@ networkstatus_vote_free(networkstatus_t *ns)
   if (ns->routerstatus_list) {
     if (ns->type == NS_TYPE_VOTE || ns->type == NS_TYPE_OPINION) {
       SMARTLIST_FOREACH(ns->routerstatus_list, vote_routerstatus_t *, rs,
-      {
-        tor_free(rs->version);
-        tor_free(rs);
-      });
+                        vote_routerstatus_free(rs));
     } else {
       SMARTLIST_FOREACH(ns->routerstatus_list, routerstatus_t *, rs,
-                        tor_free(rs));
+                        routerstatus_free(rs));
     }
 
     smartlist_free(ns->routerstatus_list);