dovecot-1.1: Fixed extension record checking.
dovecot at dovecot.org
dovecot at dovecot.org
Sat Mar 15 06:58:23 EET 2008
details: http://hg.dovecot.org/dovecot-1.1/rev/fc526477d36b
changeset: 7419:fc526477d36b
user: Timo Sirainen <tss at iki.fi>
date: Sat Mar 15 06:58:19 2008 +0200
description:
Fixed extension record checking.
diffstat:
1 file changed, 10 insertions(+), 2 deletions(-)
src/lib-index/mail-index-map.c | 12 ++++++++++--
diffs (24 lines):
diff -r a18f7f0dcff5 -r fc526477d36b src/lib-index/mail-index-map.c
--- a/src/lib-index/mail-index-map.c Sat Mar 15 05:17:21 2008 +0200
+++ b/src/lib-index/mail-index-map.c Sat Mar 15 06:58:19 2008 +0200
@@ -178,10 +178,18 @@ int mail_index_map_ext_hdr_check(const s
}
if (ext_hdr->record_size > 0 &&
- ((ext_hdr->record_offset % ext_hdr->record_align) != 0 ||
- (hdr->record_size % ext_hdr->record_align) != 0)) {
+ (ext_hdr->record_offset % ext_hdr->record_align) != 0) {
*error_r = t_strdup_printf("Record field alignment %u "
"not used", ext_hdr->record_align);
+ return -1;
+ }
+ /* if we get here from extension introduction, record_offset=0 and
+ hdr->record_size hasn't been updated yet */
+ if (ext_hdr->record_offset != 0 &&
+ (hdr->record_size % ext_hdr->record_align) != 0) {
+ *error_r = t_strdup_printf("Record size not aligned by %u "
+ "as required by extension",
+ ext_hdr->record_align);
return -1;
}
if (ext_hdr->hdr_size > MAIL_INDEX_EXT_HEADER_MAX_SIZE) {
More information about the dovecot-cvs
mailing list