diff --git a/src/detect-engine-mpm.c b/src/detect-engine-mpm.c index 52f3521aa0..b08c6dd325 100644 --- a/src/detect-engine-mpm.c +++ b/src/detect-engine-mpm.c @@ -170,13 +170,19 @@ uint32_t PacketPatternSearchWithStreamCtx(DetectEngineThreadCtx *det_ctx, { SCEnter(); - uint32_t ret; + uint32_t ret = 0; + + if (p->flowflags & FLOW_PKT_TOSERVER) { + if (det_ctx->sgh->mpm_stream_ctx_ts == NULL) + SCReturnInt(0); - if (p->flowflags & FLOW_PKT_TOSERVER && det_ctx->sgh->mpm_stream_ctx_ts != NULL) { ret = mpm_table[det_ctx->sgh->mpm_stream_ctx_ts->mpm_type]. Search(det_ctx->sgh->mpm_stream_ctx_ts, &det_ctx->mtc, &det_ctx->pmq, p->payload, p->payload_len); - } else if (p->flowflags & FLOW_PKT_TOCLIENT && det_ctx->sgh->mpm_stream_ctx_tc != NULL) { + } else { + if (det_ctx->sgh->mpm_stream_ctx_tc == NULL) + SCReturnInt(0); + ret = mpm_table[det_ctx->sgh->mpm_stream_ctx_tc->mpm_type]. Search(det_ctx->sgh->mpm_stream_ctx_tc, &det_ctx->mtc, &det_ctx->pmq, p->payload, p->payload_len);