summaryrefslogtreecommitdiffstats
path: root/sys-utils/hwclock.c
diff options
context:
space:
mode:
authorStanislav Brabec2014-05-05 20:49:49 +0200
committerKarel Zak2014-05-06 12:49:56 +0200
commitdb8fc5f37728810bdd5b865ac420c31714e35def (patch)
tree531a3528da60f5e397665f7ff064e6926b0509b1 /sys-utils/hwclock.c
parenthwclock: Prevent excessive drift values (diff)
downloadkernel-qcow2-util-linux-db8fc5f37728810bdd5b865ac420c31714e35def.tar.gz
kernel-qcow2-util-linux-db8fc5f37728810bdd5b865ac420c31714e35def.tar.xz
kernel-qcow2-util-linux-db8fc5f37728810bdd5b865ac420c31714e35def.zip
hwclock: Check drift value in /etc/adjtime
Due to bug in older versions of hwclock, /etc/adjtime can contain excessive drift value (up to many years per day). Prevent it from applying. Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
Diffstat (limited to 'sys-utils/hwclock.c')
-rw-r--r--sys-utils/hwclock.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c
index 5e786a84a..fe97fcb75 100644
--- a/sys-utils/hwclock.c
+++ b/sys-utils/hwclock.c
@@ -1211,6 +1211,10 @@ do_adjustment(struct adjtime *adjtime_p,
printf(_
("Not setting clock because last adjustment time is zero, "
"so history is bad."));
+ } else if (abs(adjtime_p->drift_factor) > MAX_DRIFT) {
+ if (debug)
+ printf(_("Not setting clock because drift factor %f is far too high.\n"),
+ adjtime_p->drift_factor);
} else {
int adjustment;
/* Number of seconds we must insert in the Hardware Clock */