Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3147:6c7d463eaf1e HEAD
Don't allow duplicate extension names in index header.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 09 Feb 2005 00:44:47 +0200 |
parents | 9a8bf1c86699 |
children | d9327a3dbf97 |
files | src/lib-index/mail-index.c |
diffstat | 1 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index.c Tue Feb 08 14:28:12 2005 +0200 +++ b/src/lib-index/mail-index.c Wed Feb 09 00:44:47 2005 +0200 @@ -185,6 +185,7 @@ } else { idx = map->extensions->used / sizeof(*ext); } + i_assert(mail_index_map_lookup_ext(map, name) == (uint32_t)-1); ext = buffer_append_space_unsafe(map->extensions, sizeof(*ext)); memset(ext, 0, sizeof(*ext)); @@ -259,6 +260,7 @@ index->filepath); return -1; } + offset += sizeof(*ext_hdr); name_offset = offset; offset += ext_hdr->name_size + get_align(ext_hdr->name_size); @@ -266,6 +268,15 @@ t_push(); name = t_strndup(CONST_PTR_OFFSET(map->hdr_base, name_offset), ext_hdr->name_size); + + if (mail_index_map_lookup_ext(map, name) != (uint32_t)-1) { + mail_index_set_error(index, "Corrupted index file %s: " + "Duplicate header extension %s", + index->filepath, name); + t_pop(); + return -1; + } + mail_index_map_register_ext(index, map, name, offset, ext_hdr->hdr_size, ext_hdr->record_offset,