mirror of https://github.com/OISF/suricata
pool: on Init() error, properly clean up
In the stream engine, Init() can fail if the memcap is reached. In this case the segment was not freed by PoolGet: ==8600== Thread 1: ==8600== 70,480 bytes in 1,762 blocks are definitely lost in loss record 611 of 612 ==8600== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==8600== by 0x914CC8: TcpSegmentPoolAlloc (stream-tcp-reassemble.c:166) ==8600== by 0xA0D315: PoolGet (util-pool.c:297) ==8600== by 0x9302CD: StreamTcpGetSegment (stream-tcp-reassemble.c:3768) ==8600== by 0x921FE8: StreamTcpReassembleHandleSegmentHandleData (stream-tcp-reassemble.c:1873) ==8600== by 0x92EEDA: StreamTcpReassembleHandleSegment (stream-tcp-reassemble.c:3584) ==8600== by 0x8D3BB1: HandleEstablishedPacketToServer (stream-tcp.c:1969) ==8600== by 0x8D7F98: StreamTcpPacketStateEstablished (stream-tcp.c:2323) ==8600== by 0x8F13B8: StreamTcpPacket (stream-tcp.c:4243) ==8600== by 0x8F2537: StreamTcp (stream-tcp.c:4485) ==8600== by 0x95DFBB: TmThreadsSlotVarRun (tm-threads.c:559) ==8600== by 0x8BE60D: TmThreadsSlotProcessPkt (tm-threads.h:142) tcp.segment_memcap_drop | PcapFile | 1762 This patch fixes PoolGet to both Cleanup and Free the Alloc'd data in case Init fails.pull/859/head
parent
fd6fd9ce48
commit
82ae41d320
Loading…
Reference in New Issue