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
pull/7511/head
Lukas Sismis 3 years ago committed by Victor Julien
parent 2486d29adb
commit 05797c45bb

@ -452,11 +452,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