]> source.dussan.org Git - rspamd.git/commitdiff
[CritFix] Make flags mutually exclusive for mime parts
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 27 Nov 2018 15:12:26 +0000 (15:12 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 27 Nov 2018 15:12:26 +0000 (15:12 +0000)
src/libmime/archives.c
src/libmime/images.c

index 52b7960657923133cd44ed36682e2ea8676a7a54..129863264d276ecc4bf48dfdecaf24e85a35afe2 100644 (file)
@@ -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);
+                               }
                        }
-
                }
        }
 }
index 194f6e4e84d4b37887921d8a8f92613c0cd2a88c..c4d20b4ad316028aba6767b2bab0e1f6719a5967 100644 (file)
@@ -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);
+                       }
                }
        }