]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mail-duplicate - Fix segfault occurring when user has no configured...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Fri, 12 Nov 2021 10:16:47 +0000 (11:16 +0100)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 22 Nov 2021 09:17:15 +0000 (10:17 +0100)
Occurred only when a duplicate DB transaction was created.

src/lib-storage/mail-duplicate.c

index 407fe4aec91fc7eecc061d0063c002327582d8dd..7a78caa7c7b45724d98c9e71a4471a9dac8e44a9 100644 (file)
@@ -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);
 }