diff options
author | George Kadianakis <desnacked@riseup.net> | 2016-07-04 12:36:53 +0300 |
---|---|---|
committer | George Kadianakis <desnacked@riseup.net> | 2016-07-04 17:42:25 +0300 |
commit | 34bd333529a73d015561388159d7648b17fcdfa7 (patch) | |
tree | 7e54636997cac44800c7471dd88173e003de6be8 /src/or/shared_random.c | |
parent | f03c74c6315598b1a7634a4dfcdebbed1e147d08 (diff) | |
download | tor-34bd333529a73d015561388159d7648b17fcdfa7.tar.gz tor-34bd333529a73d015561388159d7648b17fcdfa7.zip |
prop250: Fix voting_schedule_t memleak in sr_state_update().
Diffstat (limited to 'src/or/shared_random.c')
-rw-r--r-- | src/or/shared_random.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/or/shared_random.c b/src/or/shared_random.c index e9e6cbcfde..fe98643f11 100644 --- a/src/or/shared_random.c +++ b/src/or/shared_random.c @@ -1291,7 +1291,6 @@ sr_get_string_for_consensus(const smartlist_t *votes, void sr_act_post_consensus(const networkstatus_t *consensus) { - time_t interval_starts; const or_options_t *options = get_options(); /* Don't act if our state hasn't been initialized. We can be called during @@ -1321,10 +1320,14 @@ sr_act_post_consensus(const networkstatus_t *consensus) sr_state_set_current_srv(srv_dup(consensus->sr_info.current_srv)); } - /* Update our internal state with the next voting interval starting time. */ - interval_starts = get_voting_schedule(options, time(NULL), - LOG_NOTICE)->interval_starts; - sr_state_update(interval_starts); + /* Prepare our state so that it's ready for the next voting period. */ + { + voting_schedule_t *voting_schedule = + get_voting_schedule(options,time(NULL), LOG_NOTICE); + time_t interval_starts = voting_schedule->interval_starts; + sr_state_update(interval_starts); + tor_free(voting_schedule); + } } /* Initialize shared random subsystem. This MUST be called early in the boot |