diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-04-15 15:19:52 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-04-15 15:19:52 +0100 |
commit | c6822d66ed9825d317f6e59526d35974ccdaa1b2 (patch) | |
tree | a03f1af5fa790d3c68eac8b7322e388979ba4baa /src/libmime/images.c | |
parent | 4068f84ca27fef18cd6d34bb271a7a3ee4ef89b2 (diff) | |
download | rspamd-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.c | 34 |
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 * |