Mercurial > dovecot > core-2.2
changeset 21651:79d9124f8c8b
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)
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Tue, 21 Feb 2017 13:08:59 +0200 |
parents | 5fb623020110 |
children | e04d881da1fb |
files | src/lib-storage/list/mailbox-list-index.c |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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) {