]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
napatech: Correct timestamp rounding issue
authorJeff Lucovsky <jeff@lucovsky.org>
Fri, 24 Apr 2020 14:28:54 +0000 (10:28 -0400)
committerVictor Julien <victor@inliniac.net>
Mon, 27 Apr 2020 18:06:56 +0000 (20:06 +0200)
This commit fixes the conversion of timestamps. Without the extra
parens, the resulting timestamp value for usecs will be 1 or 0 due to
the operator precedence order (+ takes precedence over ?:)

(cherry picked from commit 2b938987717b2128c2dcb984563bf876add6f0f7)

src/source-napatech.c

index 906bc8520b6a79cb22b472dfb9f0e799975f354c..5ef6050e6d7634b484a09d4590a37f3e990d32bc 100644 (file)
@@ -398,7 +398,7 @@ TmEcode NapatechPacketLoopZC(ThreadVars *tv, void *data, void *slot)
         switch (NT_NET_GET_PKT_TIMESTAMP_TYPE(packet_buffer)) {
             case NT_TIMESTAMP_TYPE_NATIVE_UNIX:
                 p->ts.tv_sec = pkt_ts / 100000000;
-                p->ts.tv_usec = ((pkt_ts % 100000000) / 100) + (pkt_ts % 100) > 50 ? 1 : 0;
+                p->ts.tv_usec = ((pkt_ts % 100000000) / 100) + ((pkt_ts % 100) > 50 ? 1 : 0);
                 break;
             case NT_TIMESTAMP_TYPE_PCAP:
                 p->ts.tv_sec = pkt_ts >> 32;
@@ -406,14 +406,12 @@ TmEcode NapatechPacketLoopZC(ThreadVars *tv, void *data, void *slot)
                 break;
             case NT_TIMESTAMP_TYPE_PCAP_NANOTIME:
                 p->ts.tv_sec = pkt_ts >> 32;
-                p->ts.tv_usec = (   (pkt_ts & 0xFFFFFFFF) / 1000)
-                                  + (pkt_ts % 1000) > 500 ? 1 : 0;
+                p->ts.tv_usec = ((pkt_ts & 0xFFFFFFFF) / 1000) + ((pkt_ts % 1000) > 500 ? 1 : 0);
                 break;
             case NT_TIMESTAMP_TYPE_NATIVE_NDIS:
                 /* number of seconds between 1/1/1601 and 1/1/1970 */
                 p->ts.tv_sec = (pkt_ts / 100000000) - 11644473600;
-                p->ts.tv_usec = (   (pkt_ts % 100000000) / 100)
-                                  + (pkt_ts % 100) > 50 ? 1 : 0;
+                p->ts.tv_usec = ((pkt_ts % 100000000) / 100) + ((pkt_ts % 100) > 50 ? 1 : 0);
                 break;
             default:
                 SCLogError(SC_ERR_NAPATECH_TIMESTAMP_TYPE_NOT_SUPPORTED,