aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmime
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-04-14 09:24:07 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-04-14 09:24:07 +0100
commit560d27b0de840d090666d295b0444c070f2c0a19 (patch)
tree4e4f4d838bdab2948c6e62651614ecb576a0cfce /src/libmime
parent5e5686b00c7191c71819345b9a778bc7a5cd47e2 (diff)
downloadrspamd-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.c20
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;
}
}