changeset 12955:fa2e92526716

maildir: Added asserts to make sure invalid extension records aren't written to uidlist.
author Timo Sirainen <tss@iki.fi>
date Wed, 20 Apr 2011 17:58:03 +0300
parents 4fe53879ceb1
children 0e406e7cb609
files src/lib-storage/index/maildir/maildir-uidlist.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Wed Apr 20 17:57:20 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Wed Apr 20 17:58:03 2011 +0300
@@ -1171,6 +1171,8 @@
 		p = rec->extensions;
 		while (*p != '\0') {
 			/* <key><value>\0 */
+			i_assert(MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(*p));
+
 			len = strlen((const char *)p) + 1;
 			if (*p != (unsigned char)key)
 				buffer_append(buf, p, len);
@@ -1194,6 +1196,8 @@
 	struct maildir_uidlist_rec *rec;
 	int ret;
 
+	i_assert(MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(key));
+
 	ret = maildir_uidlist_lookup_rec(uidlist, uid, &rec);
 	if (ret <= 0) {
 		if (ret < 0)
@@ -1291,6 +1295,7 @@
 		str_printfa(str, "%u", rec->uid);
 		if (rec->extensions != NULL) {
 			for (p = rec->extensions; *p != '\0'; ) {
+				i_assert(MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(*p));
 				len = strlen((const char *)p);
 				str_append_c(str, ' ');
 				str_append_n(str, p, len);
@@ -1870,6 +1875,8 @@
 	pool_t pool = ctx->partial ?
 		ctx->uidlist->record_pool : ctx->record_pool;
 
+	i_assert(MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(key));
+
 	maildir_uidlist_rec_set_ext(rec, pool, key, value);
 }