From: Jeff Lucovsky Date: Fri, 24 Apr 2020 14:28:54 +0000 (-0400) Subject: napatech: Correct timestamp rounding issue X-Git-Tag: suricata-5.0.3~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a2a0b7f35dd0eed03df72f69c714e5b489e2337;p=thirdparty%2Fsuricata.git napatech: Correct timestamp rounding issue 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) --- diff --git a/src/source-napatech.c b/src/source-napatech.c index 906bc8520b..5ef6050e6d 100644 --- a/src/source-napatech.c +++ b/src/source-napatech.c @@ -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,