|
@@ -372,6 +372,19 @@ or_state_load(void)
|
|
|
new_state = or_state_new();
|
|
|
} else if (contents) {
|
|
|
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 */
|
|
|
+ if (new_state->LastWritten > time(NULL)) {
|
|
|
+ char last_written_str[ISO_TIME_LEN+1];
|
|
|
+ char now_str[ISO_TIME_LEN+1];
|
|
|
+ format_iso_time(last_written_str, new_state->LastWritten),
|
|
|
+ format_iso_time(now_str, time(NULL));
|
|
|
+ log_warn(LD_GENERAL, "Your system clock has been set back in time. "
|
|
|
+ "Tor needs an accurate clock to know when the consensus "
|
|
|
+ "expires. You might have an empty clock battery or bad NTP "
|
|
|
+ "server. Clock time is %s, state file time is %s.",
|
|
|
+ now_str, last_written_str);
|
|
|
+ }
|
|
|
} else {
|
|
|
log_info(LD_GENERAL, "Initialized state");
|
|
|
}
|