diff options
author | Taylor Yu <catalyst@torproject.org> | 2017-09-20 18:47:15 -0500 |
---|---|---|
committer | Taylor Yu <catalyst@torproject.org> | 2017-09-20 18:54:37 -0500 |
commit | ad814cad41a101a3afd03ed0fdc55e2efd696abf (patch) | |
tree | 2e0594e1d456bd96b2ddf345762ec4fdc87fc14a /src/or/statefile.c | |
parent | 1c017edac369a40c9a1633b0560e5f0d85b4e39e (diff) | |
download | tor-ad814cad41a101a3afd03ed0fdc55e2efd696abf.tar.gz tor-ad814cad41a101a3afd03ed0fdc55e2efd696abf.zip |
Avoid assertion failure for state file clock skew
The clock_skew_warning() refactoring allowed calls from
or_state_load() to control_event_bootstrap_problem() to occur prior
bootstrap phase 0, causing an assertion failure. Initialize the
bootstrap status prior to calling clock_skew_warning() from
or_state_load().
Diffstat (limited to 'src/or/statefile.c')
-rw-r--r-- | src/or/statefile.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/or/statefile.c b/src/or/statefile.c index 86f26419be..2d579a0220 100644 --- a/src/or/statefile.c +++ b/src/or/statefile.c @@ -34,6 +34,7 @@ #include "config.h" #include "confparse.h" #include "connection.h" +#include "control.h" #include "entrynodes.h" #include "hibernate.h" #include "rephist.h" @@ -405,9 +406,14 @@ or_state_load(void) /* Warn the user if their clock has been set backwards, * they could be tricked into using old consensuses */ time_t apparent_skew = time(NULL) - new_state->LastWritten; - if (apparent_skew < 0) + if (apparent_skew < 0) { + /* Initialize bootstrap event reporting because we might call + * clock_skew_warning() before the bootstrap state is + * initialized, causing an asserttion failure. */ + control_event_bootstrap(BOOTSTRAP_STATUS_STARTING, 0); clock_skew_warning(NULL, (long)apparent_skew, 1, LD_GENERAL, "local state file", fname); + } } else { log_info(LD_GENERAL, "Initialized state"); } |