static int SMTPPreProcessCommands(SMTPState *state, Flow *f, AppLayerParserState *pstate)
{
+ DEBUG_VALIDATE_BUG_ON((state->parser_state & SMTP_PARSER_STATE_COMMAND_DATA_MODE) == 0);
+
bool line_complete = false;
int32_t input_len = state->input_len;
- for (int32_t i = 0;
- i < input_len && (state->parser_state & SMTP_PARSER_STATE_COMMAND_DATA_MODE); i++) {
+ for (int32_t i = 0; i < input_len; i++) {
if (state->input[i] == 0x0d) {
if (i < input_len - 1 && state->input[i + 1] == 0x0a) {
i++;
}
line_complete = false;
state->current_line_delimiter_len = 0;
+
+ /* bail if `SMTPProcessRequest` ended the data mode */
+ if ((state->parser_state & SMTP_PARSER_STATE_COMMAND_DATA_MODE) == 0)
+ break;
}
}
return 0;