]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: Support decimal/hexadecimal encoded entities
authorAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 25 Oct 2016 09:48:23 +0000 (12:48 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 25 Oct 2016 18:01:22 +0000 (21:01 +0300)
Add support for &#nnn; and &#xnnn; entities.

src/lib-mail/mail-html2text.c

index a85634d9fbbec660ac31498181c93351d378a0b8..f15acf2d05d7c1dde85595f6b214067c728abcb4 100644 (file)
@@ -118,14 +118,26 @@ parse_tag_name(struct mail_html2text *ht,
 
 static bool html_entity_get_unichar(const char *name, unichar_t *chr_r)
 {
-       unsigned int i;
+       unichar_t chr;
 
-       for (i = 0; i < N_ELEMENTS(html_entities); i++) {
+       for (size_t i = 0; i < N_ELEMENTS(html_entities); i++) {
                if (strcasecmp(html_entities[i].name, name) == 0) {
                        *chr_r = html_entities[i].chr;
                        return TRUE;
                }
        }
+
+       /* maybe it's just encoded binary byte
+          it can be &#nnn; or &#xnnn;
+       */
+       if (name[0] == '#' &&
+           ((name[1] == 'x' &&
+             str_to_uint32_hex(name+2, &chr) == 0) ||
+            str_to_uint32(name+1, &chr) == 0)) {
+               *chr_r = chr;
+               return TRUE;
+       }
+
        return FALSE;
 }