Browse Source

[Fix] Fix tld compositon rules

Issue: #3248, #3268
tags/2.4
Vsevolod Stakhov 4 years ago
parent
commit
4184776a17
2 changed files with 8 additions and 9 deletions
  1. 3
    4
      src/libserver/url.c
  2. 5
    5
      src/libutil/multipattern.c

+ 3
- 4
src/libserver/url.c View File

@@ -442,7 +442,6 @@ rspamd_url_parse_tld_file (const gchar *fname,

flags = URL_FLAG_NOHTML | URL_FLAG_TLD_MATCH;

#ifndef WITH_HYPERSCAN
if (linebuf[0] == '*') {
flags |= URL_FLAG_STAR_MATCH;
p = strchr (linebuf, '.');
@@ -456,9 +455,6 @@ rspamd_url_parse_tld_file (const gchar *fname,
else {
p = linebuf;
}
#else
p = linebuf;
#endif

m.flags = flags;
rspamd_multipattern_add_pattern (url_scanner->search_trie, p,
@@ -1553,6 +1549,9 @@ rspamd_tld_trie_callback (struct rspamd_multipattern *mp,
ndots--;
pos = p + 1;
}
else {
pos = p;
}

p--;
}

+ 5
- 5
src/libutil/multipattern.c View File

@@ -108,7 +108,6 @@ rspamd_multipattern_escape_tld_hyperscan (const gchar *pattern, gsize slen,
*/

if (pattern[0] == '*') {
len = slen + 4;
p = strchr (pattern, '.');

if (p == NULL) {
@@ -119,12 +118,13 @@ rspamd_multipattern_escape_tld_hyperscan (const gchar *pattern, gsize slen,
p ++;
}

prefix = ".*.";
prefix = "\\.";
len = slen + strlen (prefix);
}
else {
len = slen + 1;
prefix = ".";
prefix = "\\.";
p = pattern;
len = slen + strlen (prefix);
}

res = g_malloc (len + 1);
@@ -208,7 +208,7 @@ rspamd_multipattern_pattern_filter (const gchar *pattern, gsize len,
tmp = rspamd_multipattern_escape_tld_hyperscan (pattern, len, &tlen);

ret = rspamd_str_regexp_escape (tmp, tlen, dst_len,
gl_flags|RSPAMD_REGEXP_ESCAPE_GLOB);
gl_flags|RSPAMD_REGEXP_ESCAPE_RE);
g_free (tmp);
}
else if (flags & RSPAMD_MULTIPATTERN_RE) {

Loading…
Cancel
Save