# HG changeset patch # User Timo Sirainen # Date 1487675339 -7200 # Node ID 79d9124f8c8bd31222f4abc36d7aa0528ef5bbd7 # Parent 5fb6230201100e8dc693967f9f7302234591ac33 lib-storage: Fix assert-crash on corrupted dovecot.list.index with name_id==0 Fixes: Panic: file hash.c: line 213 (hash_table_insert_node): assertion failed: (key != NULL) diff -r 5fb623020110 -r 79d9124f8c8b src/lib-storage/list/mailbox-list-index.c --- a/src/lib-storage/list/mailbox-list-index.c Mon Feb 20 19:35:45 2017 +0200 +++ b/src/lib-storage/list/mailbox-list-index.c Tue Feb 21 13:08:59 2017 +0200 @@ -241,6 +241,8 @@ guid_128_t guid; char *name; + i_assert(node->name_id != 0); + guid_128_generate(guid); name = p_strdup_printf(ilist->mailbox_pool, "%s%s", prefix, guid_128_to_string(guid)); @@ -317,6 +319,10 @@ irec = data; node->name_id = irec->name_id; + if (node->name_id == 0) { + /* invalid name_id - assign a new one */ + node->name_id = ++ilist->highest_name_id; + } node->name = hash_table_lookup(ilist->mailbox_names, POINTER_CAST(irec->name_id)); if (node->name == NULL) {