diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-09-27 11:14:46 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-09-27 11:14:46 +0100 |
commit | 24a0be9cf3f7aa22160a43e06fa94924b7e7065a (patch) | |
tree | 89165a2be9b2eaafa96f266675913f9925cfc8d7 /src/lua/lua_regexp.c | |
parent | 71246a1a926cc088de211b5a87a6ed5eacd87270 (diff) | |
download | rspamd-24a0be9cf3f7aa22160a43e06fa94924b7e7065a.tar.gz rspamd-24a0be9cf3f7aa22160a43e06fa94924b7e7065a.zip |
[Minor] Fix re matching when len == 0
Diffstat (limited to 'src/lua/lua_regexp.c')
-rw-r--r-- | src/lua/lua_regexp.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lua/lua_regexp.c b/src/lua/lua_regexp.c index 95f40f8f0..a677f7195 100644 --- a/src/lua/lua_regexp.c +++ b/src/lua/lua_regexp.c @@ -543,7 +543,7 @@ lua_regexp_search (lua_State *L) raw = lua_toboolean (L, 3); } - if (data) { + if (data && len > 0) { if (lua_gettop (L) >= 4) { capture = TRUE; captures = g_array_new (FALSE, TRUE, @@ -633,7 +633,7 @@ lua_regexp_match (lua_State *L) raw = lua_toboolean (L, 3); } - if (data) { + if (data && len > 0) { if (re->match_limit > 0) { len = MIN (len, re->match_limit); } @@ -694,7 +694,7 @@ lua_regexp_matchn (lua_State *L) raw = lua_toboolean (L, 4); } - if (data) { + if (data && len > 0) { matches = 0; if (re->match_limit > 0) { @@ -770,10 +770,11 @@ lua_regexp_split (lua_State *L) len = MIN (len, re->match_limit); } - if (data) { + if (data && len > 0) { lua_newtable (L); i = 0; old_start = data; + while (rspamd_regexp_search (re->re, data, len, &start, &end, FALSE, NULL)) { if (start - old_start > 0) { |