From f83de100b3c6873552228c3f5613628fb6513248 Mon Sep 17 00:00:00 2001 From: dmiller Date: Wed, 11 Mar 2020 21:24:56 +0000 Subject: [PATCH] Avoid integer overflow in nping elapsedRuntime. Fixes #1961 --- nping/stats.cc | 2 +- nping/stats.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nping/stats.cc b/nping/stats.cc index fd62a2360..782ff0688 100644 --- a/nping/stats.cc +++ b/nping/stats.cc @@ -190,7 +190,7 @@ double NpingTimer::elapsed(struct timeval *now){ gettimeofday(&tv, NULL); end_tv = &tv; } - return TIMEVAL_SUBTRACT(*end_tv, start_tv) / 1000000.0; + return TIMEVAL_FSEC_SUBTRACT(*end_tv, start_tv); } diff --git a/nping/stats.h b/nping/stats.h index 90e72ce08..e6c91ffae 100644 --- a/nping/stats.h +++ b/nping/stats.h @@ -180,6 +180,8 @@ #define TIMEVAL_MSEC_SUBTRACT(a,b) ((((a).tv_sec - (b).tv_sec) * 1000) + ((a).tv_usec - (b).tv_usec) / 1000) /* Timeval subtract in seconds; truncate towards zero */ #define TIMEVAL_SEC_SUBTRACT(a,b) ((a).tv_sec - (b).tv_sec + (((a).tv_usec < (b).tv_usec) ? - 1 : 0)) +/* Timeval subtract in fractional seconds; convert to float */ +#define TIMEVAL_FSEC_SUBTRACT(a,b) ((a).tv_sec - (b).tv_sec + (((a).tv_usec - (b).tv_usec)/1000000.0)) class NpingTimer {