NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/45257: ping(8) prints bogus round-trip times after Year 2038
>Why all the complexity? All you should need is to cast to unsigned when
>assigning.
No. it is not enough.
>@@ -995,7 +995,7 @@
> struct tv32 tv32;
>
> (void) memcpy(&tv32, icp->icmp_data, sizeof(tv32));
>- tv.tv_sec = ntohl(tv32.tv32_sec);
>+ tv.tv_sec = (uint32_t)ntohl(tv32.tv32_sec);
> tv.tv_usec = ntohl(tv32.tv32_usec);
> triptime = diffsec(&last_rx, &tv);
> tsum += triptime;
In case of last_rx.tv_sec is over 0x100000000,
diffsec(&last_rx, &tv) returns big value.
e.g.) last_rx.tv_sec = 0x100000005, tv.tv_sec = 0x00000004, result is
0x100000001.
# date 210602070628.13 # unixtime 0xfffffffd
Sun Feb 7 06:28:13 UTC 2106
# ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.019 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.026 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=4294967296000.025 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=4294967296000.024 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=255 time=4294967296000.027 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=255 time=4294967296000.026 ms
^C
----localhost PING Statistics----
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev =
0.019/2863311530666.691/4294967296000.027/2217911574655.135 ms
--
ryo shimizu
Home |
Main Index |
Thread Index |
Old Index