From: Victor Julien Date: Wed, 12 Apr 2023 17:21:53 +0000 (+0200) Subject: pcap: fix return check X-Git-Tag: suricata-7.0.0-rc2~440 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F8716%2Fhead;p=thirdparty%2Fsuricata.git pcap: fix return check 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") --- diff --git a/src/source-pcap.c b/src/source-pcap.c index afcc70c448..0bf5dab25b 100644 --- a/src/source-pcap.c +++ b/src/source-pcap.c @@ -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); }