]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-server-cmd-helo - Fix panic occurring for default HELO reply.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Fri, 11 Sep 2020 19:08:03 +0000 (21:08 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 12 Apr 2021 12:14:08 +0000 (12:14 +0000)
This only fails for the HELO command; the EHLO command is unaffected. The
default reply routine is not actually used at the moment, but it is used by the
fuzzer.

Panic was:

Panic: file smtp-server-cmd-helo.c: line 160 (smtp_server_cmd_ehlo_reply_create): assertion failed: (cmd->cmd->reg->func == smtp_server_cmd_ehlo)

src/lib-smtp/smtp-server-cmd-helo.c

index 54b344bb07a795c84f9a598eedb6f39f981a17b5..a9666e40026bbca79335d10730fd6c401fb49f6a 100644 (file)
@@ -157,11 +157,13 @@ smtp_server_cmd_ehlo_reply_create(struct smtp_server_cmd_ctx *cmd)
        unsigned int extra_caps_count, i, j;
        struct smtp_server_reply *reply;
 
-       i_assert(cmd->cmd->reg->func == smtp_server_cmd_ehlo);
        reply = smtp_server_reply_create_ehlo(cmd->cmd);
 
-       if (helo_data->helo.old_smtp)
+       if (helo_data->helo.old_smtp) {
+               i_assert(cmd->cmd->reg->func == smtp_server_cmd_helo);
                return reply;
+       }
+       i_assert(cmd->cmd->reg->func == smtp_server_cmd_ehlo);
 
        extra_caps_count = 0;
        if (array_is_created(&conn->extra_capabilities)) {