From: Vsevolod Stakhov Date: Wed, 9 Dec 2015 15:08:08 +0000 (+0000) Subject: Fix setting limit for malformed regexps X-Git-Tag: 1.1.0~358 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63b90d3bf48ad144e7ff2318749cf3273dfdabe7;p=thirdparty%2Frspamd.git Fix setting limit for malformed regexps --- diff --git a/src/libmime/mime_expressions.c b/src/libmime/mime_expressions.c index bc13859c14..373ec955ec 100644 --- a/src/libmime/mime_expressions.c +++ b/src/libmime/mime_expressions.c @@ -274,6 +274,7 @@ rspamd_mime_expr_parse_regexp_atom (rspamd_mempool_t * pool, const gchar *line) /* Parse flags */ p = end + 1; re_flags = g_string_sized_new (32); + while (p != NULL) { switch (*p) { case 'i': @@ -342,13 +343,6 @@ rspamd_mime_expr_parse_regexp_atom (rspamd_mempool_t * pool, const gchar *line) result->regexp = rspamd_regexp_new (dbegin, re_flags->str, &err); - if (result->is_multiple) { - rspamd_regexp_set_maxhits (result->regexp, 0); - } - else { - rspamd_regexp_set_maxhits (result->regexp, 1); - } - g_string_free (re_flags, TRUE); if (result->regexp == NULL || err != NULL) { @@ -358,6 +352,15 @@ rspamd_mime_expr_parse_regexp_atom (rspamd_mempool_t * pool, const gchar *line) return NULL; } + if (result->regexp) { + if (result->is_multiple) { + rspamd_regexp_set_maxhits (result->regexp, 0); + } + else { + rspamd_regexp_set_maxhits (result->regexp, 1); + } + } + rspamd_mempool_add_destructor (pool, (rspamd_mempool_destruct_t) rspamd_regexp_unref, (void *)result->regexp);