]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm mailbox cryptokey generate: Fix error handling
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 10 Feb 2017 10:40:41 +0000 (12:40 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 10 Feb 2017 11:34:54 +0000 (13:34 +0200)
Don't crash if mail_user creation failed.

src/plugins/mail-crypt/doveadm-mail-crypt.c

index 5d022f41e768eca85d213145222688ab8909b729..bfe31373ed62987365eaa65a85046c169f0e4dfe 100644 (file)
@@ -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);