Mercurial > dovecot > core-2.2
changeset 21511:59fca1e76009
doveadm mailbox cryptokey generate: Fix memory leak
dest_user was set to NULL, but never freed.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 10 Feb 2017 12:33:01 +0200 |
parents | ea1d4d6e5493 |
children | be3236bce027 |
files | src/plugins/mail-crypt/doveadm-mail-crypt.c |
diffstat | 1 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/mail-crypt/doveadm-mail-crypt.c Fri Feb 10 12:09:50 2017 +0200 +++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c Fri Feb 10 12:33:01 2017 +0200 @@ -100,6 +100,7 @@ struct mail_storage_service_user *dest_service_user; struct ioloop_context *cur_ioloop_ctx; struct dcrypt_public_key *pkey; + const char *dest_username; int ret = 0; bool disallow_insecure = mail_crypt_acl_secure_sharing_enabled(user); @@ -116,6 +117,8 @@ target_uid, error); } else { i_assert(dest_user != NULL); + dest_username = dest_user->username; + /* get public key from target user */ if ((ret = mail_crypt_user_get_public_key(dest_user, &pkey, error_r)) <= 0) { @@ -125,7 +128,7 @@ ret = -1; } else if (ret == 0) { /* perform insecure sharing */ - dest_user = NULL; + dest_username = NULL; pkey = NULL; ret = 1; } @@ -136,9 +139,7 @@ t_array_init(&keys, 1); array_append(&keys, &key, 1); ret = mail_crypt_box_share_private_keys(t, pkey, - dest_user == NULL ? - NULL : - dest_user->username, + dest_username, &keys, error_r); } @@ -148,8 +149,7 @@ mail_storage_service_io_deactivate_user(user->_service_user); mail_storage_service_io_activate_user(dest_service_user); - if (dest_user != NULL) - mail_user_unref(&dest_user); + mail_user_unref(&dest_user); if (dest_service_user != NULL) mail_storage_service_user_free(&dest_service_user);