]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Disable fuzzy images by default
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Jan 2017 16:49:47 +0000 (16:49 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Jan 2017 16:49:47 +0000 (16:49 +0000)
src/libmime/images.c
src/libmime/images.h
src/plugins/fuzzy_check.c

index 31b99f022f459267ffad57a4036b9b5ef68f183f..1f3c891cfde14e5143d2fa31cfe11fe4ed4604fd 100644 (file)
@@ -428,7 +428,7 @@ rspamd_image_save_hash (struct rspamd_task *task, struct rspamd_image *img)
 
 #endif
 
-static void
+void
 rspamd_image_normalize (struct rspamd_task *task, struct rspamd_image *img)
 {
 #ifdef USABLE_GD
@@ -445,6 +445,10 @@ rspamd_image_normalize (struct rspamd_task *task, struct rspamd_image *img)
                return;
        }
 
+       if (img->data->len > task->cfg->max_pic_size) {
+               return;
+       }
+
        if (rspamd_image_check_hash (task, img)) {
                return;
        }
@@ -595,13 +599,6 @@ process_image (struct rspamd_task *task, struct rspamd_mime_part *part)
 
                img->parent = part;
 
-               if (img->data->len <= task->cfg->max_pic_size) {
-                       rspamd_image_normalize (task, img);
-               }
-               else {
-                       msg_info_task ("skip normalization for image %s: too large: %z",
-                                       img->filename, img->data->len);
-               }
                part->flags |= RSPAMD_MIME_PART_IMAGE;
                part->specific.img = img;
 
index e442eaa40ae325d86ee905cc4aea9fa968686ef5..55aa6873f9b493f0accd116bfe9650a983840ffc 100644 (file)
@@ -40,4 +40,6 @@ void rspamd_images_process (struct rspamd_task *task);
  */
 const gchar * rspamd_image_type_str (enum rspamd_image_type type);
 
+void rspamd_image_normalize (struct rspamd_task *task, struct rspamd_image *img);
+
 #endif /* IMAGES_H_ */
index 37eeded4dda6ff23f46ec79786c29020adfd8697..92930b94827146cc7302f458c2b7cc7cef2ce6d2 100644 (file)
@@ -85,6 +85,7 @@ struct fuzzy_rule {
        double max_score;
        gboolean read_only;
        gboolean skip_unknown;
+       gboolean fuzzy_images;
        gint learn_condition_cb;
 };
 
@@ -481,6 +482,10 @@ fuzzy_parse_rule (struct rspamd_config *cfg, const ucl_object_t *obj,
                rule->skip_unknown = ucl_obj_toboolean (value);
        }
 
+       if ((value = ucl_object_lookup (obj, "fuzzy_images")) != NULL) {
+               rule->fuzzy_images = ucl_obj_toboolean (value);
+       }
+
        if ((value = ucl_object_lookup (obj, "algorithm")) != NULL) {
                rule->algorithm_str = ucl_object_tostring (value);
 
@@ -2305,6 +2310,13 @@ fuzzy_generate_commands (struct rspamd_task *task, struct fuzzy_rule *rule,
                                                        g_ptr_array_add (res, io);
                                                }
 
+                                               if (rule->fuzzy_images) {
+                                                       /* Try to normalize image */
+                                                       if (!image->is_normalized) {
+                                                               rspamd_image_normalize (task, image);
+                                                       }
+                                               }
+
                                                if (image->is_normalized) {
                                                        io = fuzzy_cmd_from_image_part (rule, c, flag, value,
                                                                        task->task_pool,