From: Vsevolod Stakhov Date: Fri, 26 Jul 2019 11:49:37 +0000 (+0100) Subject: [Fix] Workaround for empty charset in rfc2231 encoding X-Git-Tag: 2.0~490 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2f3820f87e08b2a5ce1c67b59f1d5ef7ea22c99f;p=rspamd.git [Fix] Workaround for empty charset in rfc2231 encoding --- diff --git a/src/libmime/content_type.c b/src/libmime/content_type.c index 11fa8cd65..ea48c0373 100644 --- a/src/libmime/content_type.c +++ b/src/libmime/content_type.c @@ -48,12 +48,8 @@ rspamd_rfc2231_decode (rspamd_mempool_t *pool, ctok.begin = value_start; ctok.len = quote_pos - value_start; - charset = rspamd_mime_detect_charset (&ctok, pool); - - if (charset == NULL) { - msg_warn_pool ("cannot convert parameter from charset %T", &ctok); - - return FALSE; + if (ctok.len > 0) { + charset = rspamd_mime_detect_charset (&ctok, pool); } /* Now, we can check for either next quote sign or, eh, ignore that */ @@ -71,6 +67,17 @@ rspamd_rfc2231_decode (rspamd_mempool_t *pool, value_end - value_start); GError *err = NULL; + if (charset == NULL) { + /* Try heuristic */ + charset = rspamd_mime_charset_find_by_content (value_start, r); + } + + if (charset == NULL) { + msg_warn_pool ("cannot convert parameter from charset %T", &ctok); + + return FALSE; + } + param->value.begin = rspamd_mime_text_to_utf8 (pool, value_start, r, charset, ¶m->value.len, &err);