From 4771cbe8b092262f7e59def97e2c691211dad675 Mon Sep 17 00:00:00 2001 From: Eric Lammerts Date: Thu, 13 Apr 2006 11:15:26 -0400 Subject: [PATCH] Fix bogus "system time" report for 64 bit systems Eric Lammerts writes: This is known as Debian bug #195620, which is almost three years old! The problem is that a uint32_t which comes out of ntohl() (but actually represents a signed value) is directly promoted to long. Therefore no sign extension takes place. Patch below solves the problem. There are other places where this needs to be fixed, but I'll leave that to a less lazy person. --- client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client.c b/client.c index a1d18d75..bcc7eb43 100644 --- a/client.c +++ b/client.c @@ -1652,7 +1652,7 @@ process_cmd_tracking(char *line) ref_time.tv_usec = ntohl(reply.data.tracking.ref_time_us); ref_time_tm = *gmtime((time_t *)&ref_time.tv_sec); printf("Ref time (UTC) : %s", asctime(&ref_time_tm)); - correction_tv.tv_sec = ntohl(reply.data.tracking.current_correction_s); + correction_tv.tv_sec = (int32_t)ntohl(reply.data.tracking.current_correction_s); correction_tv.tv_usec = ntohl(reply.data.tracking.current_correction_us); correction = (double) correction_tv.tv_sec + 1.0e-6 * correction_tv.tv_usec; printf("System time : %.6f seconds %s of NTP time\n", fabs(correction), -- 2.47.2