* [Bug 2994] Systems with HAVE_SIGNALED_IO fail to compile. perlinger@ntp.org
* [Bug 2995] Fixes to compile on Windows
+* [Bug 3023] ntpdate cannot correct dates in the future. perlinger@ntp.org
---
(4.2.8p6) 2016/01/20 Released by Harlan Stenn <stenn@ntp.org>
clock_adjust(void)
{
register struct server *sp, *server;
- s_fp absoffset;
int dostep;
for (sp = sys_servers; sp != NULL; sp = sp->next_server)
} else if (never_step) {
dostep = 0;
} else {
- absoffset = server->soffset;
- if (absoffset < 0)
- absoffset = -absoffset;
- dostep = (absoffset >= NTPDATE_THRESHOLD || absoffset < 0);
+ /* [Bug 3023] get absolute difference, avoiding signed
+ * integer overflow like hell.
+ */
+ u_fp absoffset;
+ if (server->soffset < 0)
+ absoffset = 1u + (u_fp)(-(server->soffset + 1));
+ else
+ absoffset = (u_fp)server->soffset;
+ dostep = (absoffset >= NTPDATE_THRESHOLD);
}
if (dostep) {