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
05797c45bb5bb8b23a7af3dea2aa794c6f33e02d)
(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)) {