[tor-commits] [tor/master] Don't leak a waiting-for-certs consensus when accepting it.
nickm at torproject.org
nickm at torproject.org
Thu Apr 18 15:28:35 UTC 2013
commit cd2b508f4ec22e85104065058722293a951be200
Author: Nick Mathewson <nickm at torproject.org>
Date: Wed Apr 17 11:53:52 2013 -0400
Don't leak a waiting-for-certs consensus when accepting it.
I believe this was introduced in 6bc071f765d2829249db52, which makes
this a fix on 0.2.0.10-alpha. But my code archeology has not extended
to actually testing that theory.
---
changes/bug8719 | 6 ++++++
src/or/networkstatus.c | 5 +++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/changes/bug8719 b/changes/bug8719
new file mode 100644
index 0000000..c05b79d
--- /dev/null
+++ b/changes/bug8719
@@ -0,0 +1,6 @@
+ o Major bugfixes (memory leak):
+ - Avoid a memory leak where we would leak a consensus body when we find
+ that a consensus which we couldn't previously verify due to missing
+ certificates is now verifiable. Fixes bug 8719; bugfix on
+ 0.2.0.10-alpha.
+
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 2553a74..b78fed3 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1893,11 +1893,12 @@ networkstatus_note_certs_arrived(void)
if (!waiting->consensus)
continue;
if (networkstatus_check_consensus_signature(waiting->consensus, 0)>=0) {
+ char *waiting_body = waiting->body;
if (!networkstatus_set_current_consensus(
- waiting->body,
+ waiting_body,
networkstatus_get_flavor_name(i),
NSSET_WAS_WAITING_FOR_CERTS)) {
- tor_free(waiting->body);
+ tor_free(waiting_body);
}
}
}
More information about the tor-commits
mailing list