mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
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().
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
o Minor bugfixes (bootstrapping):
|
||||
- Avoid an assertion failure when logging a state file clock skew
|
||||
very early in bootstrapping. Fixes bug 23607; bugfix on
|
||||
0.3.2.1-alpha.
|
||||
+7
-1
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user