]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
source: pcap timestamp microsecond consistency
authorPhilippe Antoine <contact@catenacyber.fr>
Fri, 1 Apr 2022 15:55:33 +0000 (17:55 +0200)
committerVictor Julien <vjulien@oisf.net>
Fri, 15 Apr 2022 10:40:51 +0000 (12:40 +0200)
That is it should be less than 1 000 000.
Have the same for fuzz targets where the bug came from.

https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44177

src/source-pcap-file-helper.c
src/tests/fuzz/fuzz_predefpcap_aware.c
src/tests/fuzz/fuzz_sigpcap.c
src/tests/fuzz/fuzz_sigpcap_aware.c

index 558af5c54172ed5b73df510619e7ac8afdaa9eb6..37f9e4197282c2c15506d2438846b9cee5096bd6 100644 (file)
@@ -70,7 +70,7 @@ void PcapFileCallbackLoop(char *user, struct pcap_pkthdr *h, u_char *pkt)
 
     PKT_SET_SRC(p, PKT_SRC_WIRE);
     p->ts.tv_sec = h->ts.tv_sec;
-    p->ts.tv_usec = h->ts.tv_usec;
+    p->ts.tv_usec = h->ts.tv_usec % 1000000;
     SCLogDebug("p->ts.tv_sec %"PRIuMAX"", (uintmax_t)p->ts.tv_sec);
     p->datalink = ptv->datalink;
     p->pcap_cnt = ++pcap_g.cnt;
index b607c51fac09335785c5d66d891bf59d99698e45..fbdc5648c0fb070ee3242ba7716e8364bd21b670 100644 (file)
@@ -113,7 +113,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
     r = FPC_next(&pkts, &header, &pkt);
     p = PacketGetFromAlloc();
     p->ts.tv_sec = header.ts.tv_sec;
-    p->ts.tv_usec = header.ts.tv_usec;
+    p->ts.tv_usec = header.ts.tv_usec % 1000000;
     p->datalink = pkts.datalink;
     while (r > 0) {
         if (PacketCopyData(p, pkt, header.caplen) == 0) {
@@ -137,7 +137,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         r = FPC_next(&pkts, &header, &pkt);
         PACKET_RECYCLE(p);
         p->ts.tv_sec = header.ts.tv_sec;
-        p->ts.tv_usec = header.ts.tv_usec;
+        p->ts.tv_usec = header.ts.tv_usec % 1000000;
         p->datalink = pkts.datalink;
         pcap_cnt++;
         p->pcap_cnt = pcap_cnt;
index 43ca2e67303101cd0829974ce52f6d7b26e9fbaa..5c4fb02eae3fc2f8a451fd0a407b82ef6b72f4ca 100644 (file)
@@ -154,7 +154,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
     r = pcap_next_ex(pkts, &header, &pkt);
     p = PacketGetFromAlloc();
     p->ts.tv_sec = header->ts.tv_sec;
-    p->ts.tv_usec = header->ts.tv_usec;
+    p->ts.tv_usec = header->ts.tv_usec % 1000000;
     p->datalink = pcap_datalink(pkts);
     while (r > 0) {
         if (PacketCopyData(p, pkt, header->caplen) == 0) {
@@ -178,7 +178,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         r = pcap_next_ex(pkts, &header, &pkt);
         PACKET_RECYCLE(p);
         p->ts.tv_sec = header->ts.tv_sec;
-        p->ts.tv_usec = header->ts.tv_usec;
+        p->ts.tv_usec = header->ts.tv_usec % 1000000;
         p->datalink = pcap_datalink(pkts);
         pcap_cnt++;
         p->pcap_cnt = pcap_cnt;
index 00c135a0516e61dbb68fbca32ac16037b0b5918e..fb69d66189dbefdb4cf669faaf613b2e3904e041 100644 (file)
@@ -153,7 +153,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
     p = PacketGetFromAlloc();
     p->pkt_src = PKT_SRC_WIRE;
     p->ts.tv_sec = header.ts.tv_sec;
-    p->ts.tv_usec = header.ts.tv_usec;
+    p->ts.tv_usec = header.ts.tv_usec % 1000000;
     p->datalink = pkts.datalink;
     while (r > 0) {
         if (PacketCopyData(p, pkt, header.caplen) == 0) {
@@ -178,7 +178,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         PACKET_RECYCLE(p);
         p->pkt_src = PKT_SRC_WIRE;
         p->ts.tv_sec = header.ts.tv_sec;
-        p->ts.tv_usec = header.ts.tv_usec;
+        p->ts.tv_usec = header.ts.tv_usec % 1000000;
         p->datalink = pkts.datalink;
         pcap_cnt++;
         p->pcap_cnt = pcap_cnt;