Issue: #4885 Closes: #4885pull/4887/head
@@ -632,6 +632,11 @@ rspamd_re_cache_process_pcre(struct rspamd_re_runtime *rt, | |||
if (max_hits > 0 && r >= max_hits) { | |||
break; | |||
} | |||
if (start >= end) { | |||
/* We found all matches, so no more hits are possible (protect from empty patterns) */ | |||
break; | |||
} | |||
} | |||
rt->results[id] += r; |
@@ -717,6 +717,10 @@ int rspamd_multipattern_lookup(struct rspamd_multipattern *mp, | |||
&end, | |||
TRUE, | |||
NULL)) { | |||
if (start >= end) { | |||
/* We found all matches, so no more hits are possible (protect from empty patterns) */ | |||
break; | |||
} | |||
if (rspamd_multipattern_acism_cb(i, end - in, &cbd)) { | |||
goto out; | |||
} |
@@ -543,6 +543,11 @@ lua_regexp_search(lua_State *L) | |||
} | |||
matched = TRUE; | |||
if (start >= end) { | |||
/* We found all matches, so no more hits are possible (protect from empty patterns) */ | |||
break; | |||
} | |||
} | |||
if (!matched) { | |||
@@ -749,7 +754,7 @@ lua_regexp_split(lua_State *L) | |||
lua_rawseti(L, -2, ++i); | |||
matched = TRUE; | |||
} | |||
else if (start == end) { | |||
else if (start >= end) { | |||
break; | |||
} | |||
old_start = end; |