Mercurial > dovecot > core-2.2
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); }