summaryrefslogtreecommitdiffstats
path: root/src/libmime/images.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-04-15 15:19:52 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-04-15 15:19:52 +0100
commitc6822d66ed9825d317f6e59526d35974ccdaa1b2 (patch)
treea03f1af5fa790d3c68eac8b7322e388979ba4baa /src/libmime/images.c
parent4068f84ca27fef18cd6d34bb271a7a3ee4ef89b2 (diff)
downloadrspamd-c6822d66ed9825d317f6e59526d35974ccdaa1b2.tar.gz
rspamd-c6822d66ed9825d317f6e59526d35974ccdaa1b2.zip
[Minor] Try to process images before text part heuristic
Diffstat (limited to 'src/libmime/images.c')
-rw-r--r--src/libmime/images.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/libmime/images.c b/src/libmime/images.c
index 218e947fc..c54f5845a 100644
--- a/src/libmime/images.c
+++ b/src/libmime/images.c
@@ -43,7 +43,24 @@ static const guint8 jpg_sig_exif[] = {0xff, 0xe1};
static const guint8 gif_signature[] = {'G', 'I', 'F', '8'};
static const guint8 bmp_signature[] = {'B', 'M'};
-static void process_image (struct rspamd_task *task, struct rspamd_mime_part *part);
+static bool process_image (struct rspamd_task *task, struct rspamd_mime_part *part);
+
+
+bool
+rspamd_images_process_mime_part_maybe (struct rspamd_task *task,
+ struct rspamd_mime_part *part)
+{
+ if (part->part_type == RSPAMD_MIME_PART_UNDEFINED) {
+ if (part->detected_type &&
+ strcmp (part->detected_type, "image") == 0 &&
+ part->parsed_data.len > 0) {
+
+ return process_image (task, part);
+ }
+ }
+
+ return false;
+}
void
rspamd_images_process (struct rspamd_task *task)
@@ -52,14 +69,7 @@ rspamd_images_process (struct rspamd_task *task)
struct rspamd_mime_part *part;
PTR_ARRAY_FOREACH (MESSAGE_FIELD (task, parts), i, part) {
- if (part->part_type == RSPAMD_MIME_PART_UNDEFINED) {
- if (part->detected_type &&
- strcmp (part->detected_type, "image") == 0 &&
- part->parsed_data.len > 0) {
-
- process_image (task, part);
- }
- }
+ rspamd_images_process_mime_part_maybe (task, part);
}
}
@@ -592,7 +602,7 @@ rspamd_maybe_process_image (rspamd_mempool_t *pool,
return img;
}
-static void
+static bool
process_image (struct rspamd_task *task, struct rspamd_mime_part *part)
{
struct rspamd_image *img;
@@ -612,7 +622,11 @@ process_image (struct rspamd_task *task, struct rspamd_mime_part *part)
part->part_type = RSPAMD_MIME_PART_IMAGE;
part->specific.img = img;
+
+ return true;
}
+
+ return false;
}
const gchar *