diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-11-20 20:44:49 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-11-20 20:45:22 +0000 |
commit | a45141c003e065341474de0ec0b4310b2f4437c8 (patch) | |
tree | 2e9851e15290df805793cf6b51d0a0ae0753c195 /src/libutil/multipattern.c | |
parent | dc506fc54b60f4bcc7390447a0d80bfd6f799e54 (diff) | |
download | rspamd-a45141c003e065341474de0ec0b4310b2f4437c8.tar.gz rspamd-a45141c003e065341474de0ec0b4310b2f4437c8.zip |
[Fix] Properly escape utf8 regexps in hyperscan mode
Diffstat (limited to 'src/libutil/multipattern.c')
-rw-r--r-- | src/libutil/multipattern.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libutil/multipattern.c b/src/libutil/multipattern.c index 94b5398b3..e4a39d5fe 100644 --- a/src/libutil/multipattern.c +++ b/src/libutil/multipattern.c @@ -193,6 +193,12 @@ rspamd_multipattern_pattern_filter (const gchar *pattern, gsize len, gchar *ret = NULL; #ifdef WITH_HYPERSCAN if (rspamd_hs_check ()) { + gint gl_flags = RSPAMD_REGEXP_ESCAPE_ASCII; + + if (flags & RSPAMD_MULTIPATTERN_UTF8) { + gl_flags |= RSPAMD_REGEXP_ESCAPE_UTF; + } + if (flags & RSPAMD_MULTIPATTERN_TLD) { ret = rspamd_multipattern_escape_tld_hyperscan (pattern, len, dst_len); } @@ -201,10 +207,11 @@ rspamd_multipattern_pattern_filter (const gchar *pattern, gsize len, *dst_len = rspamd_strlcpy (ret, pattern, len + 1); } else if (flags & RSPAMD_MULTIPATTERN_GLOB) { - ret = rspamd_str_regexp_escape (pattern, len, dst_len, TRUE); + ret = rspamd_str_regexp_escape (pattern, len, dst_len, + gl_flags | RSPAMD_REGEXP_ESCAPE_GLOB); } else { - ret = rspamd_str_regexp_escape (pattern, len, dst_len, FALSE); + ret = rspamd_str_regexp_escape (pattern, len, dst_len, gl_flags); } return ret; |