Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5952:ba118a9eeb50 HEAD
Some paranoia fixes for memory allocation. Don't access a mmaped variable
directly in case it happens to change.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 12 Jul 2007 03:17:38 +0300 |
parents | e9b5d3d33b95 |
children | 2b150b4b49df |
files | src/lib-index/mail-cache-fields.c |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-cache-fields.c Thu Jul 12 02:44:47 2007 +0300 +++ b/src/lib-index/mail-cache-fields.c Thu Jul 12 03:17:38 2007 +0300 @@ -207,6 +207,7 @@ const uint8_t *types, *decisions; const char *p, *names, *end; void *orig_key, *orig_value; + unsigned int new_fields_count; uint32_t offset, i; if (mail_cache_header_fields_get_offset(cache, &offset) < 0) @@ -243,18 +244,18 @@ return -1; } field_hdr = CONST_PTR_OFFSET(cache->data, offset); + new_fields_count = field_hdr->fields_count; - if (field_hdr->fields_count != 0) { + if (new_fields_count != 0) { cache->file_field_map = i_realloc(cache->file_field_map, cache->file_fields_count * sizeof(unsigned int), - field_hdr->fields_count * - sizeof(unsigned int)); + new_fields_count * sizeof(unsigned int)); } else { i_free_and_null(cache->file_field_map); } - cache->file_fields_count = field_hdr->fields_count; + cache->file_fields_count = new_fields_count; last_used = CONST_PTR_OFFSET(field_hdr, MAIL_CACHE_FIELD_LAST_USED()); sizes = CONST_PTR_OFFSET(field_hdr,