Don't leak a waiting-for-certs consensus when accepting it.

I believe this was introduced in 6bc071f765, which makes
this a fix on 0.2.0.10-alpha.  But my code archeology has not extended
to actually testing that theory.
This commit is contained in:
Nick Mathewson 2013-04-17 11:53:52 -04:00
parent 9630fb917f
commit cd2b508f4e
2 changed files with 9 additions and 2 deletions

6
changes/bug8719 Normal file
View File

@ -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.

View File

@ -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);
}
}
}