From: Phil Young Date: Wed, 11 Nov 2020 19:21:39 +0000 (-0500) Subject: napatech: Fix potential double release of packet X-Git-Tag: suricata-6.0.1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=789dcbd49d077b54726fb09738fb0f42112d00d0;p=thirdparty%2Fsuricata.git napatech: Fix potential double release of packet This addresses readmine issue #4018. There was the potential for a packet buffer to be released twice in response to an error condition. This addresses this by only calling NT_NetRxRelease() when the p->ReleasePacket is called. --- diff --git a/src/source-napatech.c b/src/source-napatech.c index c30a4fb213..a18616e512 100644 --- a/src/source-napatech.c +++ b/src/source-napatech.c @@ -1001,12 +1001,10 @@ TmEcode NapatechPacketLoop(ThreadVars *tv, void *data, void *slot) if (unlikely(PacketSetData(p, (uint8_t *)NT_NET_GET_PKT_L2_PTR(packet_buffer), NT_NET_GET_PKT_WIRE_LENGTH(packet_buffer)))) { TmqhOutputPacketpool(ntv->tv, p); - NT_NetRxRelease(ntv->rx_stream, packet_buffer); SCReturnInt(TM_ECODE_FAILED); } if (unlikely(TmThreadsSlotProcessPkt(ntv->tv, ntv->slot, p) != TM_ECODE_OK)) { - NT_NetRxRelease(ntv->rx_stream, packet_buffer); SCReturnInt(TM_ECODE_FAILED); }