Skip to content

Commit

Permalink
detect: flush when setting no_inspection
Browse files Browse the repository at this point in the history
Ticket: 6578

When a protocol such as SSH sets no_inspection, we still have to
flush the current streams and packets that contain clear-text
for detection.
  • Loading branch information
catenacyber committed Nov 27, 2023
1 parent d005fff commit 2423186
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/flow-worker.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,8 +391,19 @@ static inline void FlowWorkerStreamTCPUpdate(ThreadVars *tv, FlowWorkerThreadDat
StreamTcp(tv, p, fw->stream_thread, &fw->pq);
FLOWWORKER_PROFILING_END(p, PROFILE_FLOWWORKER_STREAM);

if (FlowChangeProto(p->flow)) {
// this is the first packet that sets no payload inspection
bool setting_nopayload =
(p->flow->flags & FLOW_NOPAYLOAD_INSPECTION) && !(p->flags & PKT_NOPAYLOAD_INSPECTION);
if (FlowChangeProto(p->flow) || setting_nopayload) {
if (setting_nopayload) {
// We still need to flush detection on previous packets.
// The pseudo packets should not have NOPAYLOAD_INSPECTION set yet.
p->flow->flags &= ~FLOW_NOPAYLOAD_INSPECTION;
}
StreamTcpDetectLogFlush(tv, fw->stream_thread, p->flow, p, &fw->pq);
if (setting_nopayload) {
p->flow->flags |= FLOW_NOPAYLOAD_INSPECTION;
}
AppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TS);
AppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TC);
}
Expand Down

0 comments on commit 2423186

Please sign in to comment.