← Commit list

d6ff27de1

Denys Vlasenko
Denys Vlasenko
2019-10-25
SUCCESS Duration: 155s

Subject

ntpd: abs(tmx.offset) was truncating a "long" typed value

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/ntpd.c+4 -2
@@ -1876,9 +1876,11 @@ update_local_clock(peer_t *p)
//15:31:53.473 update from:<IP> offset:+0.000007 delay:0.158142 jitter:0.010922 clock drift:+9.343ppm tc:6
//15:32:58.902 update from:<IP> offset:-0.000728 delay:0.158222 jitter:0.009454 clock drift:+9.298ppm tc:6
/*
- * This expression would choose MIN_FREQHOLD + 8 in the above example.
+ * This expression would choose MIN_FREQHOLD + 8 in the above example
+ * (off_065 is +1 for each 0.065536 seconds of offset).
*/
- G.FREQHOLD_cnt = 1 + MIN_FREQHOLD + ((unsigned)(abs(tmx.offset)) >> 16);
+ unsigned off_065 = abs((int)(tmx.offset >> 16));
+ G.FREQHOLD_cnt = 1 + MIN_FREQHOLD + off_065;
}
G.FREQHOLD_cnt--;
tmx.status |= STA_FREQHOLD;