From: Harlan Stenn Date: Wed, 17 Apr 2024 06:06:36 +0000 (-0500) Subject: [Bug 3912] Avoid rare math errors in ntptrace. X-Git-Tag: NTP_4_2_8P18_RC1~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4a977b511178b63c144595034f439cb226df5c9;p=thirdparty%2Fntp.git [Bug 3912] Avoid rare math errors in ntptrace. bk: 661f66ec8DfezcxFNYtuevJ8HLl0uQ --- diff --git a/ChangeLog b/ChangeLog index a7715b492..019db478a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ stepped. * [Bug 3913] Avoid duplicate IPv6 link-local manycast associations. +* [Bug 3912] Avoid rare math errors in ntptrace. * [Bug 3909] Do not select multicast local address for unicast peer. * [Bug 3903] lib/isc/win32/strerror.c NTstrerror() is not thread-safe. diff --git a/scripts/ntptrace/ntptrace.in b/scripts/ntptrace/ntptrace.in index e9439773b..d92e07963 100755 --- a/scripts/ntptrace/ntptrace.in +++ b/scripts/ntptrace/ntptrace.in @@ -7,6 +7,7 @@ use 5.006_000; use strict; use lib "@PERLLIBDIR@"; use NTP::Util qw(ntp_read_vars do_dns); +use Scalar::Util qw(looks_like_number); exit run(@ARGV) unless caller; @@ -60,7 +61,16 @@ sub get_info { return if not defined $info; return if not exists $info->{stratum}; + if (not (exists $info->{offset} && looks_like_number($info->{offset}))) { + $info->{offset} = "NaN"; + } $info->{offset} /= 1000; + if (not (exists $info->{rootdisp} && looks_like_number($info->{rootdisp}))) { + $info->{rootdisp} = "NaN"; + } + if (not (exists $info->{rootdelay} && looks_like_number($info->{rootdelay}))) { + $info->{rootdelay} = "NaN"; + } $info->{syncdistance} = ($info->{rootdisp} + ($info->{rootdelay} / 2)) / 1000; return %$info;