From: Vsevolod Stakhov Date: Sat, 27 May 2017 22:44:04 +0000 (+0100) Subject: [Fix] Do not add exact hashes from different parts X-Git-Tag: 1.6.0~119 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=47b87877734ceea722d42ee9c92f727332e40a92;p=rspamd.git [Fix] Do not add exact hashes from different parts --- diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c index ccca8eddc..a63201bd3 100644 --- a/src/plugins/fuzzy_check.c +++ b/src/plugins/fuzzy_check.c @@ -2270,8 +2270,8 @@ fuzzy_generate_commands (struct rspamd_task *task, struct fuzzy_rule *rule, struct rspamd_mime_text_part *part; struct rspamd_mime_part *mime_part; struct rspamd_image *image; - struct fuzzy_cmd_io *io; - guint i; + struct fuzzy_cmd_io *io, *cur; + guint i, j; GPtrArray *res; res = g_ptr_array_sized_new (task->parts->len + 1); @@ -2319,8 +2319,21 @@ fuzzy_generate_commands (struct rspamd_task *task, struct fuzzy_rule *rule, io = fuzzy_cmd_from_text_part (rule, c, flag, value, task->task_pool, part); + if (io) { - g_ptr_array_add (res, io); + gboolean skip_existing = FALSE; + + PTR_ARRAY_FOREACH (res, j, cur) { + if (memcmp (cur->cmd.digest, io->cmd.digest, + sizeof (io->cmd.digest)) == 0) { + skip_existing = TRUE; + break; + } + } + + if (!skip_existing) { + g_ptr_array_add (res, io); + } } } }