From: Stephan Bosch Date: Fri, 12 Nov 2021 10:16:47 +0000 (+0100) Subject: lib-storage: mail-duplicate - Fix segfault occurring when user has no configured... X-Git-Tag: 2.3.18~116 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d36d2c595a12378b597f1fc82cd7b47cbbadb2e1;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mail-duplicate - Fix segfault occurring when user has no configured home directory Occurred only when a duplicate DB transaction was created. --- diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c index 407fe4aec9..7a78caa7c7 100644 --- a/src/lib-storage/mail-duplicate.c +++ b/src/lib-storage/mail-duplicate.c @@ -491,13 +491,15 @@ mail_duplicate_transaction_free(struct mail_duplicate_transaction **_trans) i_assert(trans->db->transaction_count > 0); trans->db->transaction_count--; - iter = hash_table_iterate_init(trans->hash); - while (hash_table_iterate(iter, trans->hash, &d, &d)) - mail_duplicate_unlock(trans, d); - hash_table_iterate_deinit(&iter); + if (hash_table_is_created(trans->hash)) { + iter = hash_table_iterate_init(trans->hash); + while (hash_table_iterate(iter, trans->hash, &d, &d)) + mail_duplicate_unlock(trans, d); + hash_table_iterate_deinit(&iter); + hash_table_destroy(&trans->hash); + } i_assert(trans->id_lock_count == 0); - hash_table_destroy(&trans->hash); event_unref(&trans->event); pool_unref(&trans->pool); }