@@ -491,9 +491,14 @@ rspamd_mime_expr_parse_regexp_atom (rspamd_mempool_t * pool, const gchar *line, | |||
dend = result->regexp_text + (end - start); | |||
*dend = '\0'; | |||
result->regexp = rspamd_regexp_new (dbegin, re_flags->str, | |||
gsize esc_len; | |||
gchar *escaped = rspamd_str_regexp_escape (dbegin, dend - dbegin, &esc_len, | |||
RSPAMD_REGEXP_ESCAPE_UTF); | |||
result->regexp = rspamd_regexp_new (escaped, re_flags->str, | |||
&err); | |||
g_free (escaped); | |||
g_string_free (re_flags, TRUE); | |||
if (result->regexp == NULL || err != NULL) { |
@@ -2591,7 +2591,7 @@ out: | |||
gchar * | |||
rspamd_str_regexp_escape (const gchar *pattern, gsize slen, | |||
gsize *dst_len, enum rspamd_regexp_escape_flags flags) | |||
gsize *dst_len, enum rspamd_regexp_escape_flags flags) | |||
{ | |||
const gchar *p, *end = pattern + slen; | |||
gchar *res, *d, t, *tmp_utf = NULL, *dend; |
@@ -466,7 +466,7 @@ enum rspamd_regexp_escape_flags { | |||
*/ | |||
gchar * | |||
rspamd_str_regexp_escape (const gchar *pattern, gsize slen, | |||
gsize *dst_len, enum rspamd_regexp_escape_flags flags); | |||
gsize *dst_len, enum rspamd_regexp_escape_flags flags); | |||
/** | |||
* Returns copy of src (zero terminated) where all unicode is made valid or replaced |