From: Timo Sirainen Date: Fri, 10 Feb 2017 10:41:28 +0000 (+0200) Subject: mail-crypt-acl: Fix error handling X-Git-Tag: 2.3.0.rc1~2146 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c1ab825edf003f5cfc6c31730442f36a17209101;p=thirdparty%2Fdovecot%2Fcore.git mail-crypt-acl: Fix error handling Don't crash if mail_user creation failed. --- diff --git a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c index 58f7acca62..ac62dc6f2d 100644 --- a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c +++ b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c @@ -280,7 +280,8 @@ static int mail_crypt_acl_object_update(struct acl_object *aclobj, &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( aclobj->backend->list->ns->user->_service_user ); @@ -289,6 +290,7 @@ static int mail_crypt_acl_object_update(struct acl_object *aclobj, i_error("mail-crypt-acl-plugin: " "Cannot initialize destination user %s: %s", username, error); + break; } else { i_assert(dest_user != NULL); if ((ret = mailbox_open(box)) < 0) { @@ -314,10 +316,8 @@ static int mail_crypt_acl_object_update(struct acl_object *aclobj, ); mail_storage_service_io_activate_user(dest_service_user); - if (dest_user != NULL) - mail_user_unref(&dest_user); - if (dest_service_user != NULL) - mail_storage_service_user_free(&dest_service_user); + mail_user_unref(&dest_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);