Browse Source

[Fix] Escape utf in regexp to dodge ragel/hyperscan issue

tags/2.0
Vsevolod Stakhov 5 years ago
parent
commit
e658c7fcb5
3 changed files with 8 additions and 3 deletions
  1. 6
    1
      src/libmime/mime_expressions.c
  2. 1
    1
      src/libutil/str_util.c
  3. 1
    1
      src/libutil/str_util.h

+ 6
- 1
src/libmime/mime_expressions.c View File

@@ -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) {

+ 1
- 1
src/libutil/str_util.c View File

@@ -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;

+ 1
- 1
src/libutil/str_util.h View File

@@ -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

Loading…
Cancel
Save