From ed895c04ff1239bd75f97a1fd7a4b53706f7f25c Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Sat, 30 Mar 2024 15:05:26 +0100 Subject: [PATCH] smtp: exit data mode if data command was rejected And the server was advertising pipelining. Ticket: 6906 --- src/app-layer-smtp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app-layer-smtp.c b/src/app-layer-smtp.c index 5fc59cfa7f..5a4fc0c7a2 100644 --- a/src/app-layer-smtp.c +++ b/src/app-layer-smtp.c @@ -997,6 +997,10 @@ static int SMTPProcessReply(SMTPState *state, Flow *f, AppLayerParserState *psta state->parser_state |= SMTP_PARSER_STATE_COMMAND_DATA_MODE; } else { /* decoder event */ + if (state->parser_state & SMTP_PARSER_STATE_PIPELINING_SERVER) { + // reset data mode if we had entered it prematurely + state->parser_state &= ~SMTP_PARSER_STATE_COMMAND_DATA_MODE; + } SMTPSetEvent(state, SMTP_DECODER_EVENT_DATA_COMMAND_REJECTED); } } else if (IsReplyToCommand(state, SMTP_COMMAND_RSET)) { -- 2.47.2