From af611b5842a6d107d1668cd4f5d6d6c8b3079c1c Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 2 Dec 2021 10:56:26 +0100 Subject: [PATCH] ntp: limit total monotonic offset correction In addition to the 16s limit in per-response change in the monotonic offset, don't allow the total accumulated offset injected in sourcestats to be larger than 16 seconds. --- ntp_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ntp_core.c b/ntp_core.c index 6c3ba76..f259f6a 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -1660,11 +1660,11 @@ process_sample(NCR_Instance inst, NTP_Sample *sample) error_in_estimate = fabs(-sample->offset - estimated_offset); - if (inst->mono_doffset != 0.0) { + if (inst->mono_doffset != 0.0 && fabs(inst->mono_doffset) <= MAX_MONO_DOFFSET) { DEBUG_LOG("Monotonic correction offset=%.9f", inst->mono_doffset); SST_CorrectOffset(SRC_GetSourcestats(inst->source), inst->mono_doffset); - inst->mono_doffset = 0.0; } + inst->mono_doffset = 0.0; SRC_AccumulateSample(inst->source, sample); SRC_SelectSource(inst->source);