]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
smtp: check if we have a current transaction 7193/head
authorPhilippe Antoine <contact@catenacyber.fr>
Tue, 25 Jan 2022 20:10:37 +0000 (21:10 +0100)
committerVictor Julien <vjulien@oisf.net>
Wed, 30 Mar 2022 13:56:04 +0000 (15:56 +0200)
Ticket: 4948

This is not the perfect solution, but it prevents to trigger
the assert, and keep the assert.
A better solution would need to create transaction from
the reponse parsing, in case a later command was buffered and
not answered. But this would not be enough as NoNewTx prevents
the creation of a new transaction for RSET...

(cherry picked from commit 4247605d874113ef13003816007e0575219d065e)

src/app-layer-smtp.c

index ba1d08c2ecea320b1e0b06433e3ed388ab1adc60..80f7e18d26141098862d5bb2abec65e909e44427 100644 (file)
@@ -1061,7 +1061,7 @@ static int SMTPProcessReply(SMTPState *state, Flow *f,
             SMTPSetEvent(state, SMTP_DECODER_EVENT_DATA_COMMAND_REJECTED);
         }
     } else if (IsReplyToCommand(state, SMTP_COMMAND_RSET)) {
-        if (reply_code == SMTP_REPLY_250 &&
+        if (reply_code == SMTP_REPLY_250 && state->curr_tx &&
                 !(state->parser_state & SMTP_PARSER_STATE_PARSING_MULTILINE_REPLY)) {
             SMTPTransactionComplete(state);
         }