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



The following reply was made to PR bin/45257; it has been noted by GNATS.

From: christos%zoulas.com@localhost (Christos Zoulas)
To: Ryo Shimizu <ryo%nerv.org@localhost>, gnats-bugs%NetBSD.org@localhost
Cc: gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, 
david%l8s.co.uk@localhost, 
        tsutsui%ceres.dti.ne.jp@localhost, ryo%netbsd.org@localhost
Subject: Re: bin/45257: ping(8) prints bogus round-trip times after Year 2038
Date: Thu, 18 Aug 2011 07:12:13 -0400

 On Aug 18,  7:46pm, ryo%nerv.org@localhost (Ryo Shimizu) wrote:
 -- Subject: Re: bin/45257: ping(8) prints bogus round-trip times after Year 2
 
 | 
 | >Fix:
 | pointed out from dsl@ about the seconds wrap case,
 | and reviewed by tsutsui@.
 
 Why all the complexity? All you should need is to cast to unsigned when
 assigning.
 
 christos
 
 Index: ping.c
 ===================================================================
 RCS file: /cvsroot/src/sbin/ping/ping.c,v
 retrieving revision 1.93
 diff -u -u -r1.93 ping.c
 --- ping.c     11 Mar 2011 09:59:56 -0000      1.93
 +++ ping.c     18 Aug 2011 11:10:30 -0000
 @@ -137,7 +137,7 @@
  #define TST(seq) (A(seq) & B(seq))
  
  struct tv32 {
 -      int32_t tv32_sec;
 +      uint32_t tv32_sec;
        int32_t tv32_usec;
  };
  
 @@ -859,7 +859,7 @@
  
        opack_icmp.icmp_type = ICMP_ECHO;
        opack_icmp.icmp_id = ident;
 -      tv32.tv32_sec = htonl(now.tv_sec);
 +      tv32.tv32_sec = (uint32_t)htonl(now.tv_sec);
        tv32.tv32_usec = htonl(now.tv_usec);
        if (pingflags & F_TIMING)
                (void) memcpy(&opack_icmp.icmp_data[0], &tv32, sizeof(tv32));
 @@ -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;
 


Home | Main Index | Thread Index | Old Index