]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[CritFix] Fix levenshtein distance calculations
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 May 2016 15:27:11 +0000 (16:27 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 May 2016 15:28:06 +0000 (16:28 +0100)
src/libmime/message.c

index 18ef81fb223d290b47837012b3752f733314cef5..2a7498fb90f2215a8967e3085d805fc6ce52ad64 100644 (file)
@@ -1093,7 +1093,7 @@ rspamd_words_levenshtein_distance (struct rspamd_task *task,
 {
        guint s1len, s2len, x, y, lastdiag, olddiag;
        guint *column, ret;
-       guint64 *h1, *h2;
+       guint64 h1, h2;
        gint eq;
        static const guint max_words = 8192;
 
@@ -1117,9 +1117,9 @@ rspamd_words_levenshtein_distance (struct rspamd_task *task,
 
                for (y = 1, lastdiag = x - 1; y <= s1len; y++) {
                        olddiag = column[y];
-                       h1 = &g_array_index (w1, guint64, y - 1);
-                       h2 = &g_array_index (w2, guint64, x - 1);
-                       eq = h1 == h2;
+                       h1 = g_array_index (w1, guint64, y - 1);
+                       h2 = g_array_index (w2, guint64, x - 1);
+                       eq = (h1 == h2) ? 1 : 0;
                        /*
                         * Cost of replacement is twice higher than cost of add/delete
                         * to calculate percentage properly