]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: mail-html2text - Validate UCS4 codepoint
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 5 Jan 2018 07:51:00 +0000 (09:51 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 10 Jan 2018 07:27:54 +0000 (09:27 +0200)
Fixes: Panic: file unichar.c: line 160 (uni_ucs4_to_utf8_c): assertion failed: (uni_is_valid_ucs4(chr))
src/lib-mail/mail-html2text.c
src/lib-mail/test-mail-html2text.c

index 856ec0b8c1c7c256d53b007413cf30d33274f28f..80f25393a134b292ee7ba2319aba1ae58140a199 100644 (file)
@@ -133,7 +133,8 @@ static bool html_entity_get_unichar(const char *name, unichar_t *chr_r)
        if (name[0] == '#' &&
            ((name[1] == 'x' &&
              str_to_uint32_hex(name+2, &chr) == 0) ||
-            str_to_uint32(name+1, &chr) == 0)) {
+            str_to_uint32(name+1, &chr) == 0) &&
+            uni_is_valid_ucs4(chr)) {
                *chr_r = chr;
                return TRUE;
        }
index f4bb165bbb3447fbcbf5dc6bbc87f4826f41cd89..cbb0a6630f88a624a3f3eda66f0f772f11e6cd9b 100644 (file)
@@ -41,6 +41,7 @@ static const struct {
        { "a&#228;", "a\xC3\xA4" },
        { "a&#xe4;", "a\xC3\xA4" },
        { "&#8364;", "\xE2\x82\xAC" },
+       { "&#deee;", "" }, // invalid codepoint
 };
 
 static const char *test_blockquote_input =