dovecot-2.0: maildir: Added asserts to make sure invalid extensi...

dovecot at dovecot.org dovecot at dovecot.org
Wed Apr 20 17:58:14 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.0/rev/fa2e92526716
changeset: 12748:fa2e92526716
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Apr 20 17:58:03 2011 +0300
description:
maildir: Added asserts to make sure invalid extension records aren't written to uidlist.

diffstat:

 src/lib-storage/index/maildir/maildir-uidlist.c |  7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diffs (38 lines):

diff -r 4fe53879ceb1 -r fa2e92526716 src/lib-storage/index/maildir/maildir-uidlist.c
--- 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);
 }
 


More information about the dovecot-cvs mailing list