changeset 7892:053d1aa325f6 HEAD

mail_index_update_header_ext(): Don't crash if size isn't 32bit aligned.
author Timo Sirainen <tss@iki.fi>
date Wed, 18 Jun 2008 06:33:08 +0300
parents 9cd7caa922d6
children 9e4be86d4b7d
files src/lib-index/mail-transaction-log-append.c
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-transaction-log-append.c	Wed Jun 18 06:30:51 2008 +0300
+++ b/src/lib-index/mail-transaction-log-append.c	Wed Jun 18 06:33:08 2008 +0300
@@ -294,12 +294,14 @@
 	buffer_t *buf;
 	unsigned int hdr_size;
 
-	hdr_size = sizeof(*trans_hdr) + hdr->size;
+	hdr_size = sizeof(*trans_hdr) + hdr->size + 4;
 	buf = buffer_create_static_hard(pool_datastack_create(), hdr_size);
 	trans_hdr = buffer_append_space_unsafe(buf, sizeof(*trans_hdr));
 	trans_hdr->offset = hdr->offset;
 	trans_hdr->size = hdr->size;
 	buffer_append(buf, hdr + 1, hdr->size);
+	if (buf->used % 4 != 0)
+		buffer_append_zero(buf, 4 - buf->used % 4);
 	log_append_buffer(ctx, buf, NULL, MAIL_TRANSACTION_EXT_HDR_UPDATE);
 }