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-8.0.0-beta1~1304 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed895c04ff1239bd75f97a1fd7a4b53706f7f25c;p=thirdparty%2Fsuricata.git smtp: exit data mode if data command was rejected And the server was advertising pipelining. Ticket: 6906 --- 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)) {