forked from I2P_Developers/i2p.i2p
Clock: Add sanity checks to detect invalid system clock
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.time.RouterTimestamper;
|
||||
import net.i2p.time.BuildTime;
|
||||
import net.i2p.time.Timestamper;
|
||||
import net.i2p.util.Clock;
|
||||
import net.i2p.util.Log;
|
||||
@@ -108,7 +110,7 @@ public class RouterClock extends Clock {
|
||||
private synchronized void setOffset(long offsetMs, boolean force, int stratum) {
|
||||
long delta = offsetMs - _offset;
|
||||
if (!force) {
|
||||
if ((offsetMs > MAX_OFFSET) || (offsetMs < 0 - MAX_OFFSET)) {
|
||||
if (!_isSystemClockBad && (offsetMs > MAX_OFFSET || offsetMs < 0 - MAX_OFFSET)) {
|
||||
Log log = getLog();
|
||||
if (log.shouldLog(Log.WARN))
|
||||
log.warn("Maximum offset shift exceeded [" + offsetMs + "], NOT HONORING IT");
|
||||
@@ -218,6 +220,15 @@ public class RouterClock extends Clock {
|
||||
*/
|
||||
@Override
|
||||
public void setNow(long realTime, int stratum) {
|
||||
if (realTime < BuildTime.getEarliestTime() || realTime > BuildTime.getLatestTime()) {
|
||||
Log log = getLog();
|
||||
String msg = "Invalid time received: " + new Date(realTime);
|
||||
if (log.shouldWarn())
|
||||
log.warn(msg, new Exception());
|
||||
else
|
||||
log.logAlways(Log.WARN, msg);
|
||||
return;
|
||||
}
|
||||
long diff = realTime - System.currentTimeMillis();
|
||||
setOffset(diff, stratum);
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 6;
|
||||
public final static long BUILD = 7;
|
||||
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "";
|
||||
|
Reference in New Issue
Block a user