]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
util/time: Prevent usecs overflow
authorIlya Bakhtin <ilya.bakhtin@gmail.com>
Fri, 29 Sep 2023 14:23:04 +0000 (16:23 +0200)
committerJeff Lucovsky <jlucovsky@oisf.net>
Fri, 8 Dec 2023 13:50:10 +0000 (08:50 -0500)
This commit takes care of original seconds value and prevents the
useconds field from overflowing pas its maximum value.

Issue: 6372
(cherry picked from commit d3095ac0589228a4c63a466f5ff3b99bab98bf25)

src/util-time.h

index 9bbd8798dd17cd320336107ab165537a66245e3b..479f9a2b352fb4455ca62bc69c3bcc565687ec72 100644 (file)
@@ -57,7 +57,11 @@ typedef struct {
 #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_FROM_USECS((ts).usecs + (us))
+#define SCTIME_ADD_USECS(ts, us)                                                                   \
+    (SCTime_t)                                                                                     \
+    {                                                                                              \
+        .secs = (ts).secs + ((ts).usecs + (us)) / 1000000, .usecs = ((ts).usecs + (us)) % 1000000  \
+    }
 #define SCTIME_FROM_SECS(s)                                                                        \
     (SCTime_t)                                                                                     \
     {                                                                                              \