From: Timo Sirainen Date: Fri, 10 Feb 2017 10:40:41 +0000 (+0200) Subject: doveadm mailbox cryptokey generate: Fix error handling X-Git-Tag: 2.3.0.rc1~2147 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5202ed6f18f759b88f1e680eba1a7d0a07903e16;p=thirdparty%2Fdovecot%2Fcore.git doveadm mailbox cryptokey generate: Fix error handling Don't crash if mail_user creation failed. --- diff --git a/src/plugins/mail-crypt/doveadm-mail-crypt.c b/src/plugins/mail-crypt/doveadm-mail-crypt.c index 5d022f41e7..bfe31373ed 100644 --- a/src/plugins/mail-crypt/doveadm-mail-crypt.c +++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c @@ -109,12 +109,14 @@ mcp_update_shared_key(struct mailbox_transaction_context *t, &dest_service_user, &error); /* to make sure we get correct logging context */ - mail_storage_service_io_deactivate_user(dest_service_user); + if (ret > 0) + mail_storage_service_io_deactivate_user(dest_service_user); mail_storage_service_io_activate_user(user->_service_user); if (ret <= 0) { i_error("Cannot initialize destination user %s: %s", target_uid, error); + return ret; } else { i_assert(dest_user != NULL); dest_username = dest_user->username; @@ -150,8 +152,7 @@ mcp_update_shared_key(struct mailbox_transaction_context *t, mail_storage_service_io_activate_user(dest_service_user); mail_user_unref(&dest_user); - if (dest_service_user != NULL) - mail_storage_service_user_free(&dest_service_user); + mail_storage_service_user_free(&dest_service_user); if ((cur_ioloop_ctx = io_loop_get_current_context(current_ioloop)) != NULL) io_loop_context_deactivate(cur_ioloop_ctx);