diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-04-17 11:53:52 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-04-17 11:53:52 -0400 |
commit | cd2b508f4ec22e85104065058722293a951be200 (patch) | |
tree | 00d0fed3f768fc24483f2cff362705ca11f226ac | |
parent | 9630fb917f3549b3fcbd4a3885e0c47f4be9be36 (diff) | |
download | tor-cd2b508f4ec22e85104065058722293a951be200.tar.gz tor-cd2b508f4ec22e85104065058722293a951be200.zip |
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.
-rw-r--r-- | changes/bug8719 | 6 | ||||
-rw-r--r-- | 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 0000000000..c05b79ddec --- /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 2553a74e50..b78fed3111 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); } } } |