]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
pcap: fix return check 8716/head
authorVictor Julien <vjulien@oisf.net>
Wed, 12 Apr 2023 17:21:53 +0000 (19:21 +0200)
committerVictor Julien <vjulien@oisf.net>
Wed, 12 Apr 2023 18:05:06 +0000 (20:05 +0200)
The check that meant to check if pcap_dispatch processed fewer packets
than the desired number was inaccurate. It would also include all errors
(negative return values).

This patch considers only positive values for this check.

Fixes: 9fe08f2374f6 ("pcap: improve pcap_breakloop support")
src/source-pcap.c

index afcc70c4483252fa64c5a24c293451dbeac16b27..0bf5dab25b022909df32b021bde9a84ce4bb9322 100644 (file)
@@ -323,7 +323,7 @@ static TmEcode ReceivePcapLoop(ThreadVars *tv, void *data, void *slot)
 
         int r = pcap_dispatch(ptv->pcap_handle, packet_q_len,
                           (pcap_handler)PcapCallbackLoop, (u_char *)ptv);
-        if (unlikely(r == 0 || r == PCAP_ERROR_BREAK || r < packet_q_len)) {
+        if (unlikely(r == 0 || r == PCAP_ERROR_BREAK || (r > 0 && r < packet_q_len))) {
             if (r == PCAP_ERROR_BREAK && ptv->cb_result == TM_ECODE_FAILED) {
                 SCReturnInt(TM_ECODE_FAILED);
             }