]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-charset: Don't assert-crash when iconv() skips lots of invalid input.
authorTimo Sirainen <tss@iki.fi>
Mon, 21 Jun 2010 20:17:58 +0000 (21:17 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 21 Jun 2010 20:17:58 +0000 (21:17 +0100)
--HG--
branch : HEAD

src/lib-charset/charset-iconv.c

index ee3d31f26c053079752bae5c16fc4f5d0a2c4879..b0ca3ce8bd112fd16cfd2f7f7275ef45a2c9fd59 100644 (file)
@@ -131,7 +131,7 @@ charset_to_utf8(struct charset_translation *t,
 {
        bool dtcase = (t->flags & CHARSET_FLAG_DECOMP_TITLECASE) != 0;
        enum charset_result result;
-       size_t pos, used, size, prev_used = 0;
+       size_t pos, used, size, prev_pos = 0, prev_used = 0;
        bool ret;
 
        for (pos = 0;;) {
@@ -151,7 +151,8 @@ charset_to_utf8(struct charset_translation *t,
                        (void)buffer_append_space_unsafe(dest, size);
                        buffer_set_used_size(dest, used);
                } else {
-                       i_assert(dest->used != prev_used);
+                       i_assert(dest->used != prev_used || pos != prev_pos);
+                       prev_pos = pos;
                        prev_used = dest->used;
                }
        }