dovecot-2.2: imap CATENATE: Do one more mailbox_save_continue() ...

dovecot at dovecot.org dovecot at dovecot.org
Wed Aug 29 16:55:44 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/bce550bb2b23
changeset: 14969:bce550bb2b23
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Aug 29 16:55:33 2012 +0300
description:
imap CATENATE: Do one more mailbox_save_continue() after adding EOF to stream.
Fixes a crash with external mail attachments (mail_attachment_dir).

diffstat:

 src/imap/cmd-append.c |  7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diffs (17 lines):

diff -r 407ea0cd54ee -r bce550bb2b23 src/imap/cmd-append.c
--- a/src/imap/cmd-append.c	Wed Aug 29 16:45:25 2012 +0300
+++ b/src/imap/cmd-append.c	Wed Aug 29 16:55:33 2012 +0300
@@ -353,7 +353,12 @@
 	i_stream_unref(&ctx->input);
 	ctx->catenate = FALSE;
 
-	if (mailbox_save_finish(&ctx->save_ctx) < 0) {
+	/* do mailbox_save_continue() once more after appending EOF,
+	   to finish any pending reads */
+	if (mailbox_save_continue(ctx->save_ctx) < 0) {
+		mailbox_save_cancel(&ctx->save_ctx);
+		ctx->failed = TRUE;
+	} else if (mailbox_save_finish(&ctx->save_ctx) < 0) {
 		ctx->failed = TRUE;
 		client_send_storage_error(cmd, ctx->storage);
 	}


More information about the dovecot-cvs mailing list