Browse Source

Merge remote-tracking branch 'catalyst-oniongit/bug23607'

Nick Mathewson 6 years ago
parent
commit
4c7a89a226
3 changed files with 16 additions and 2 deletions
  1. 4 0
      changes/bug23606
  2. 4 0
      changes/bug23607
  3. 8 2
      src/or/statefile.c

+ 4 - 0
changes/bug23606

@@ -0,0 +1,4 @@
+  o Minor bugfixes (bootstrapping):
+    - When warning about state file clock skew, report the correct
+      direction for the detected skew.  Fixes bug 23606; bugfix on
+      0.2.8.1-alpha.

+ 4 - 0
changes/bug23607

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

+ 8 - 2
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"
@@ -404,10 +405,15 @@ or_state_load(void)
     log_info(LD_GENERAL, "Loaded state from \"%s\"", fname);
     /* Warn the user if their clock has been set backwards,
      * they could be tricked into using old consensuses */
-    time_t apparent_skew = new_state->LastWritten - time(NULL);
-    if (apparent_skew > 0)
+    time_t apparent_skew = time(NULL) - new_state->LastWritten;
+    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");
   }