From: Stephen Donnelly Date: Tue, 28 Nov 2023 21:23:45 +0000 (+1300) Subject: util/time: Improve usecs handling in time macros X-Git-Tag: suricata-8.0.0-beta1~1964 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0850e3d137e553e22fd8f598d276794ddd098c41;p=thirdparty%2Fsuricata.git util/time: Improve usecs handling in time macros Fix SCTIME_ADD_SECS zeroing subsecond part When adding s seconds to SCtime_t ts, don't zero out the ts.usecs field. Issue: 6584 Fix SCTIME_FROM_TIMESPEC garbage microseconds part When converting nanosecond to microseconds divide by 1000 instead of multiplying by 1000. Issue: 6585 --- diff --git a/src/util-time.h b/src/util-time.h index 479f9a2b35..b0f7207b3c 100644 --- a/src/util-time.h +++ b/src/util-time.h @@ -56,12 +56,16 @@ typedef struct { #define SCTIME_USECS(t) ((uint64_t)(t).usecs) #define SCTIME_SECS(t) ((uint64_t)(t).secs) #define SCTIME_MSECS(t) (SCTIME_SECS(t) * 1000 + SCTIME_USECS(t) / 1000) -#define SCTIME_ADD_SECS(ts, s) SCTIME_FROM_SECS((ts).secs + (s)) #define SCTIME_ADD_USECS(ts, us) \ (SCTime_t) \ { \ .secs = (ts).secs + ((ts).usecs + (us)) / 1000000, .usecs = ((ts).usecs + (us)) % 1000000 \ } +#define SCTIME_ADD_SECS(ts, s) \ + (SCTime_t) \ + { \ + .secs = (ts).secs + (s), .usecs = (ts).usecs \ + } #define SCTIME_FROM_SECS(s) \ (SCTime_t) \ { \ @@ -87,7 +91,7 @@ typedef struct { #define SCTIME_FROM_TIMESPEC(ts) \ (SCTime_t) \ { \ - .secs = (ts)->tv_sec, .usecs = (ts)->tv_nsec * 1000 \ + .secs = (ts)->tv_sec, .usecs = (ts)->tv_nsec / 1000 \ } #define SCTIME_TO_TIMEVAL(tv, t) \