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);
        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)
                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);
        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);
 }