]> 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)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Wed, 6 Feb 2019 08:08:52 +0000 (10:08 +0200)
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 95a06eedae472f86f8f00bc56ce9da6df5793998..0f486c6b39326ba60e176340511d6d649390ebe6 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;