From: Stephan Bosch Date: Thu, 25 Apr 2019 07:51:32 +0000 (+0200) Subject: lib-smtp: smtp-server-cmd-auth - Fix AUTH response error handling so that it stops... X-Git-Tag: 2.3.6~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e9d60648abb9bbceff89882a5309cb9532e702e9;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-server-cmd-auth - Fix AUTH response error handling so that it stops reading more input. Otherwise, it may try to read more data from the stream as the next AUTH response, which causes an assert crash in the command parser later on. Even when the parser finds no input from the stream, it will advance its state towards AUTH response parsing, which is a problem when the next command is subsequently being parsed. Panic was: Panic: file smtp-command-parser.c: line 438 (smtp_command_parse_next): assertion failed: (!parser->auth_response || parser->state.state == SMTP_COMMAND_PARSE_STATE_INIT || parser->state.state == SMTP_COMMAND_PARSE_STATE_ERROR) --- diff --git a/src/lib-smtp/smtp-server-cmd-auth.c b/src/lib-smtp/smtp-server-cmd-auth.c index 24cb55adef..0d8062caa7 100644 --- a/src/lib-smtp/smtp-server-cmd-auth.c +++ b/src/lib-smtp/smtp-server-cmd-auth.c @@ -99,6 +99,7 @@ static void cmd_auth_input(struct smtp_server_cmd_ctx *cmd) smtp_server_connection_debug(conn, "Client sent invalid AUTH response: %s", error); + smtp_server_command_input_lock(cmd); switch (error_code) { case SMTP_COMMAND_PARSE_ERROR_BROKEN_COMMAND: conn->input_broken = TRUE;