diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-04-14 09:24:07 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-04-14 09:24:07 +0100 |
commit | 560d27b0de840d090666d295b0444c070f2c0a19 (patch) | |
tree | 4e4f4d838bdab2948c6e62651614ecb576a0cfce /src/libmime | |
parent | 5e5686b00c7191c71819345b9a778bc7a5cd47e2 (diff) | |
download | rspamd-560d27b0de840d090666d295b0444c070f2c0a19.tar.gz rspamd-560d27b0de840d090666d295b0444c070f2c0a19.zip |
[Fix] Always try to adjust filename
Issue: #1591
Diffstat (limited to 'src/libmime')
-rw-r--r-- | src/libmime/mime_parser.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/libmime/mime_parser.c b/src/libmime/mime_parser.c index 8becc888b..d93cde835 100644 --- a/src/libmime/mime_parser.c +++ b/src/libmime/mime_parser.c @@ -340,7 +340,6 @@ rspamd_mime_part_get_cd (struct rspamd_task *task, struct rspamd_mime_part *part memcpy (&cd->filename, &found->value, sizeof (cd->filename)); } } - } else { for (i = 0; i < hdrs->len; i ++) { @@ -354,6 +353,25 @@ rspamd_mime_part_get_cd (struct rspamd_task *task, struct rspamd_mime_part *part if (cd) { msg_debug_mime ("processed content disposition: %s", cd->lc_data); + + /* We still need to check filename */ + if (cd->filename.len == 0) { + if (part->ct && part->ct->attrs) { + RSPAMD_FTOK_ASSIGN (&srch, "name"); + found = g_hash_table_lookup (part->ct->attrs, &srch); + + if (!found) { + RSPAMD_FTOK_ASSIGN (&srch, "filename"); + found = g_hash_table_lookup (part->ct->attrs, &srch); + } + + if (found) { + cd->type = RSPAMD_CT_ATTACHMENT; + memcpy (&cd->filename, &found->value, + sizeof (cd->filename)); + } + } + } break; } } |