]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix finding tld in util.get_tld
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 14 Aug 2016 11:31:48 +0000 (12:31 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 14 Aug 2016 11:31:48 +0000 (12:31 +0100)
src/libserver/url.c

index 83c0a69ea751fc221d2dd7fefc54d0f49086fdc6..cc6cfbb3a834652c136c9903473fb865d6520168 100644 (file)
@@ -1648,11 +1648,13 @@ rspamd_tld_trie_find_callback (struct rspamd_multipattern *mp,
        }
 
        if (ndots == 0 || p == start - 1) {
-               cbdata->out->begin = pos;
-               cbdata->out->len = cbdata->begin + cbdata->len - pos;
+               if (cbdata->begin + cbdata->len - pos > cbdata->out->len) {
+                       cbdata->out->begin = pos;
+                       cbdata->out->len = cbdata->begin + cbdata->len - pos;
+               }
        }
 
-       return 1;
+       return 0;
 }
 
 gboolean
@@ -1667,13 +1669,16 @@ rspamd_url_find_tld (const gchar *in, gsize inlen, rspamd_ftok_t *out)
        cbdata.begin = in;
        cbdata.len = inlen;
        cbdata.out = out;
+       out->len = 0;
 
-       if (rspamd_multipattern_lookup (url_scanner->search_trie, in, inlen,
-                       rspamd_tld_trie_find_callback, &cbdata, NULL) == 0) {
-               return FALSE;
+       rspamd_multipattern_lookup (url_scanner->search_trie, in, inlen,
+                       rspamd_tld_trie_find_callback, &cbdata, NULL);
+
+       if (out->len > 0) {
+               return TRUE;
        }
 
-       return TRUE;
+       return FALSE;
 }
 
 static const gchar url_braces[] = {