bypass: fix memory leak - reassign of FlowBypassInfo

In some situations bypass callback is called on already bypassed
flow. This allocates FlowBypassInfo structure for the flow but
does not check if the flow already has one.

Issue: #5368
(cherry picked from commit 05797c45bb)
pull/7535/head
Lukas Sismis 4 years ago committed by Victor Julien
parent 8fa5f3bdd4
commit 4c4b1de168

@ -446,11 +446,17 @@ void PacketBypassCallback(Packet *p)
(state == FLOW_STATE_CAPTURE_BYPASSED)) {
return;
}
FlowBypassInfo *fc = SCCalloc(sizeof(FlowBypassInfo), 1);
if (fc) {
FlowSetStorageById(p->flow, GetFlowBypassInfoID(), fc);
} else {
return;
FlowBypassInfo *fc;
fc = FlowGetStorageById(p->flow, GetFlowBypassInfoID());
if (fc == NULL) {
fc = SCCalloc(sizeof(FlowBypassInfo), 1);
if (fc) {
FlowSetStorageById(p->flow, GetFlowBypassInfoID(), fc);
} else {
return;
}
}
}
if (p->BypassPacketsFlow && p->BypassPacketsFlow(p)) {

Loading…
Cancel
Save