]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Do not compare parts with no words.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Jul 2015 12:51:07 +0000 (13:51 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Jul 2015 12:51:07 +0000 (13:51 +0100)
src/libmime/message.c

index a8df8aea990fb61bbef15c8e1f451b69ab6051db..e9e0af77701de000da3f0874990fa8dcd94ede4d 100644 (file)
@@ -1674,22 +1674,25 @@ rspamd_message_parse (struct rspamd_task *task)
                                                p1->normalized_words && p2->normalized_words) {
 
                                        tw = MAX (p1->normalized_words->len, p2->normalized_words->len);
-                                       dw = rspamd_words_levenshtein_distance (p1->normalized_words,
-                                                       p2->normalized_words);
-                                       diff = tw > 0 ? (100.0 * (gdouble)(tw - dw) / (gdouble)tw) : 100;
-
-                                       msg_info (
-                                                       "different words: %d, total words: %d, "
-                                                       "got likeliness between parts of %d%%",
-                                                       dw, tw,
-                                                       diff);
-
-                                       pdiff = rspamd_mempool_alloc (task->task_pool, sizeof (gint));
-                                       *pdiff = diff;
-                                       rspamd_mempool_set_variable (task->task_pool,
-                                                       "parts_distance",
-                                                       pdiff,
-                                                       NULL);
+
+                                       if (tw > 0) {
+                                               dw = rspamd_words_levenshtein_distance (p1->normalized_words,
+                                                               p2->normalized_words);
+                                               diff = tw > 0 ? (100.0 * (gdouble)(tw - dw) / (gdouble)tw) : 100;
+
+                                               msg_info (
+                                                               "different words: %d, total words: %d, "
+                                                               "got likeliness between parts of %d%%",
+                                                               dw, tw,
+                                                               diff);
+
+                                               pdiff = rspamd_mempool_alloc (task->task_pool, sizeof (gint));
+                                               *pdiff = diff;
+                                               rspamd_mempool_set_variable (task->task_pool,
+                                                               "parts_distance",
+                                                               pdiff,
+                                                               NULL);
+                                       }
                                }
                        }
                }