From 89849bda3097cf3b561e81b7ae10ca65509175ea Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 27 Nov 2018 15:12:26 +0000 Subject: [PATCH] [CritFix] Make flags mutually exclusive for mime parts --- src/libmime/archives.c | 25 ++++++++++++------------- src/libmime/images.c | 7 +++++-- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/libmime/archives.c b/src/libmime/archives.c index 52b796065..129863264 100644 --- a/src/libmime/archives.c +++ b/src/libmime/archives.c @@ -1531,20 +1531,19 @@ rspamd_archives_process (struct rspamd_task *task) for (i = 0; i < task->parts->len; i ++) { part = g_ptr_array_index (task->parts, i); - if (part->parsed_data.len > 0) { - if (rspamd_archive_cheat_detect (part, "zip", - zip_magic, sizeof (zip_magic))) { - rspamd_archive_process_zip (task, part); - } - else if (rspamd_archive_cheat_detect (part, "rar", - rar_magic, sizeof (rar_magic))) { - rspamd_archive_process_rar (task, part); - } - else if (rspamd_archive_cheat_detect (part, "7z", - sz_magic, sizeof (sz_magic))) { - rspamd_archive_process_7zip (task, part); + if (!(part->flags & (RSPAMD_MIME_PART_TEXT|RSPAMD_MIME_PART_IMAGE))) { + if (part->parsed_data.len > 0) { + if (rspamd_archive_cheat_detect (part, "zip", + zip_magic, sizeof (zip_magic))) { + rspamd_archive_process_zip (task, part); + } else if (rspamd_archive_cheat_detect (part, "rar", + rar_magic, sizeof (rar_magic))) { + rspamd_archive_process_rar (task, part); + } else if (rspamd_archive_cheat_detect (part, "7z", + sz_magic, sizeof (sz_magic))) { + rspamd_archive_process_7zip (task, part); + } } - } } } diff --git a/src/libmime/images.c b/src/libmime/images.c index 194f6e4e8..c4d20b4ad 100644 --- a/src/libmime/images.c +++ b/src/libmime/images.c @@ -49,9 +49,12 @@ rspamd_images_process (struct rspamd_task *task) for (i = 0; i < task->parts->len; i ++) { part = g_ptr_array_index (task->parts, i); - if (rspamd_ftok_cmp (&part->ct->type, &srch) == 0 && + + if (!(part->flags & (RSPAMD_MIME_PART_TEXT|RSPAMD_MIME_PART_ARCHIVE))) { + if (rspamd_ftok_cmp (&part->ct->type, &srch) == 0 && part->parsed_data.len > 0) { - process_image (task, part); + process_image (task, part); + } } } -- 2.39.5