From: Philippe Antoine Date: Sat, 30 Mar 2024 14:05:26 +0000 (+0100) Subject: smtp: exit data mode if data command was rejected X-Git-Tag: suricata-7.0.6~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f0a53dc24b19f079fdcdbf47a9a8520cbf361c0;p=thirdparty%2Fsuricata.git smtp: exit data mode if data command was rejected And the server was advertising pipelining. Ticket: 6906 (cherry picked from commit ed895c04ff1239bd75f97a1fd7a4b53706f7f25c) --- diff --git a/src/app-layer-smtp.c b/src/app-layer-smtp.c index 3465e63256..05843a9bb2 100644 --- a/src/app-layer-smtp.c +++ b/src/app-layer-smtp.c @@ -993,6 +993,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)) {