]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
app-layer-smtp: support for multiline response
authorMaurizio Abba <mabba@lastline.com>
Mon, 16 Nov 2015 12:14:24 +0000 (12:14 +0000)
committerVictor Julien <victor@inliniac.net>
Thu, 26 Nov 2015 08:59:12 +0000 (09:59 +0100)
Multiline response support is provided but not enforced. This patch
allow parsing multiline response when a reply is processed

src/app-layer-smtp.c

index 0c161edb591bea95c8ca497151e05b4e147dcf36..cd0a732e1eb70fb2866bc5bfa7e1f3997ae7ec5b 100644 (file)
@@ -879,7 +879,12 @@ static int SMTPProcessReply(SMTPState *state, Flow *f,
 
     if (state->cmds_idx == state->cmds_cnt) {
         if (!(state->parser_state & SMTP_PARSER_STATE_FIRST_REPLY_SEEN)) {
-            state->parser_state |= SMTP_PARSER_STATE_FIRST_REPLY_SEEN;
+            /* the first server reply can be a multiline message. Let's
+             * flag the fact that we have seen the first reply only at the end
+             * of a multiline reply
+             */
+            if (!(state->parser_state & SMTP_PARSER_STATE_PARSING_MULTILINE_REPLY))
+                state->parser_state |= SMTP_PARSER_STATE_FIRST_REPLY_SEEN;
             if (reply_code == SMTP_REPLY_220)
                 SCReturnInt(0);
             else