changeset 21513:3b1b633a40cc

mail-crypt-acl: Fix error handling Don't crash if mail_user creation failed.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 10 Feb 2017 12:41:28 +0200
parents be3236bce027
children 83481546a656
files src/plugins/mail-crypt/mail-crypt-acl-plugin.c
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c	Fri Feb 10 12:40:41 2017 +0200
+++ b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c	Fri Feb 10 12:41:28 2017 +0200
@@ -272,7 +272,8 @@
 						 &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
 		);
@@ -281,6 +282,7 @@
 			i_error("mail-crypt-acl-plugin: "
 				"Cannot initialize destination user %s: %s",
 				username, error);
+			break;
 		} else {
 			i_assert(dest_user != NULL);
 			if ((ret = mail_crypt_acl_update_private_key(box, dest_user,
@@ -301,10 +303,8 @@
 		);
 		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);