]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: client: Fix segmentation fault occurring at transaction timeout.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 15 Aug 2018 22:28:51 +0000 (00:28 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 22 Aug 2018 08:50:33 +0000 (08:50 +0000)
In the DATA command callback trans->cmd_data can be NULL when the command is
aborted from smtp_client_transaction_fail_reply().

src/lib-smtp/smtp-client-transaction.c

index b1501eeb677ec32b33ae2988684b4dc0e0864c31..c96ed9282349942620b7f8a43f1f8bb9e8621284 100644 (file)
@@ -661,7 +661,8 @@ smtp_client_transaction_data_cb(const struct smtp_reply *reply,
        smtp_client_transaction_ref(trans);
 
        rcpt = array_get_modifiable(&trans->rcpts, &count);
-       if (trans->rcpt_next_data_idx == 0 && count > 0) 
+       if (trans->cmd_data != NULL && /* NULL when failed early */
+           trans->rcpt_next_data_idx == 0 && count > 0)
                smtp_client_command_set_replies(trans->cmd_data, count);
        for (i = trans->rcpt_next_data_idx; i < count; i++) {
                trans->rcpt_next_data_idx = i + 1;