Merge remote-tracking branch 'jigsaw/fix-19562'

This commit is contained in:
Nick Mathewson 2016-08-19 19:41:53 -04:00
commit 3e8f93bb10
4 changed files with 13 additions and 4 deletions

View File

@ -2577,7 +2577,7 @@ get_next_valid_after_time(time_t now)
tor_assert(new_voting_schedule); tor_assert(new_voting_schedule);
next_valid_after_time = new_voting_schedule->interval_starts; next_valid_after_time = new_voting_schedule->interval_starts;
tor_free(new_voting_schedule); free_voting_schedule(new_voting_schedule);
return next_valid_after_time; return next_valid_after_time;
} }
@ -2601,7 +2601,7 @@ dirvote_recalculate_timing(const or_options_t *options, time_t now)
/* Fill in the global static struct now */ /* Fill in the global static struct now */
memcpy(&voting_schedule, new_voting_schedule, sizeof(voting_schedule)); memcpy(&voting_schedule, new_voting_schedule, sizeof(voting_schedule));
tor_free(new_voting_schedule); free_voting_schedule(new_voting_schedule);
} }
/* Populate and return a new voting_schedule_t that can be used to schedule /* Populate and return a new voting_schedule_t that can be used to schedule
@ -2660,6 +2660,13 @@ get_voting_schedule(const or_options_t *options, time_t now, int severity)
return new_voting_schedule; return new_voting_schedule;
} }
/** Frees a voting_schedule_t. This should be used instead of the generic tor_free. */
void
free_voting_schedule(voting_schedule_t *voting_schedule_to_free)
{
tor_free(voting_schedule_to_free);
}
/** Entry point: Take whatever voting actions are pending as of <b>now</b>. */ /** Entry point: Take whatever voting actions are pending as of <b>now</b>. */
void void
dirvote_act(const or_options_t *options, time_t now) dirvote_act(const or_options_t *options, time_t now)

View File

@ -157,6 +157,8 @@ typedef struct {
voting_schedule_t *get_voting_schedule(const or_options_t *options, voting_schedule_t *get_voting_schedule(const or_options_t *options,
time_t now, int severity); time_t now, int severity);
void free_voting_schedule(voting_schedule_t *voting_schedule_to_free);
void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out); void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out);
time_t dirvote_get_start_of_next_interval(time_t now, time_t dirvote_get_start_of_next_interval(time_t now,
int interval, int interval,

View File

@ -1328,7 +1328,7 @@ sr_act_post_consensus(const networkstatus_t *consensus)
get_voting_schedule(options,time(NULL), LOG_NOTICE); get_voting_schedule(options,time(NULL), LOG_NOTICE);
time_t interval_starts = voting_schedule->interval_starts; time_t interval_starts = voting_schedule->interval_starts;
sr_state_update(interval_starts); sr_state_update(interval_starts);
tor_free(voting_schedule); free_voting_schedule(voting_schedule);
} }
} }

View File

@ -150,7 +150,7 @@ get_start_time_of_current_round(time_t now)
voting_interval, voting_interval,
options->TestingV3AuthVotingStartOffset); options->TestingV3AuthVotingStartOffset);
tor_free(new_voting_schedule); free_voting_schedule(new_voting_schedule);
return curr_start; return curr_start;
} }