]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Decode filename in content disposition
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 21 Dec 2016 15:09:50 +0000 (15:09 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 21 Dec 2016 15:26:59 +0000 (15:26 +0000)
src/libmime/content_type.c
src/libmime/mime_parser.c

index a002d0884a96f2b2e82c4530a7ec8a61f9b19315..1fc1db5658a3804b056596dd57d890de16643bb1 100644 (file)
@@ -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;
        }
index d9687ce97187edc3f7f5fc50f24b666fa26e9bc3..f113121ba9d39505de26ae4ccc1ec2a07b33a349 100644 (file)
@@ -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);