From: Vsevolod Stakhov Date: Wed, 21 Dec 2016 15:09:50 +0000 (+0000) Subject: [Fix] Decode filename in content disposition X-Git-Tag: 1.5.0~514 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=066e21615a70a2317c1a0f9747ba090af0b7e1ea;p=rspamd.git [Fix] Decode filename in content disposition --- diff --git a/src/libmime/content_type.c b/src/libmime/content_type.c index a002d0884..1fc1db565 100644 --- a/src/libmime/content_type.c +++ b/src/libmime/content_type.c @@ -163,6 +163,7 @@ rspamd_content_disposition_add_param (rspamd_mempool_t *pool, const gchar *value_start, const gchar *value_end) { rspamd_ftok_t srch; + gchar *decoded; struct rspamd_content_type_param *found = NULL, *nparam; g_assert (cd != NULL); @@ -181,8 +182,8 @@ rspamd_content_disposition_add_param (rspamd_mempool_t *pool, nparam = rspamd_mempool_alloc (pool, sizeof (*nparam)); nparam->name.begin = name_start; nparam->name.len = name_end - name_start; - nparam->value.begin = value_start; - nparam->value.len = value_end - value_start; + decoded = rspamd_mime_header_decode (pool, value_start, value_end - value_start); + RSPAMD_FTOK_FROM_STR (&nparam->value, decoded); DL_APPEND (found, nparam); if (!found) { @@ -193,7 +194,7 @@ rspamd_content_disposition_add_param (rspamd_mempool_t *pool, srch.len = 8; if (rspamd_ftok_cmp (&nparam->name, &srch) == 0) { - /* Adjust charset */ + /* Adjust filename */ cd->filename.begin = nparam->value.begin; cd->filename.len = nparam->value.len; } diff --git a/src/libmime/mime_parser.c b/src/libmime/mime_parser.c index d9687ce97..f113121ba 100644 --- a/src/libmime/mime_parser.c +++ b/src/libmime/mime_parser.c @@ -256,7 +256,6 @@ rspamd_mime_part_get_cd (struct rspamd_task *task, struct rspamd_mime_part *part hdr = g_ptr_array_index (hdrs, i); hlen = strlen (hdr->value); - rspamd_str_lc (hdr->value, hlen); cd = rspamd_content_disposition_parse (hdr->value, hlen, task->task_pool);