summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-14 13:56:05 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-14 13:56:05 +0100
commit4271f629ede6bbe9e5b4cbc8346c8b943dedab18 (patch)
tree5998f460ed5ae75574d547b8560e8f780abc80ed
parenta850877478d9372b5c648b79b8dc7fa9616914ab (diff)
downloadrspamd-4271f629ede6bbe9e5b4cbc8346c8b943dedab18.tar.gz
rspamd-4271f629ede6bbe9e5b4cbc8346c8b943dedab18.zip
Fix splitting in case of bogus regexp.
-rw-r--r--src/lua/lua_regexp.c3
-rw-r--r--test/lua/unit/regxep.lua3
2 files changed, 6 insertions, 0 deletions
diff --git a/src/lua/lua_regexp.c b/src/lua/lua_regexp.c
index 2f7ea3ea1..75e54bab5 100644
--- a/src/lua/lua_regexp.c
+++ b/src/lua/lua_regexp.c
@@ -568,6 +568,9 @@ lua_regexp_split (lua_State *L)
lua_rawseti (L, -2, ++i);
matched = TRUE;
}
+ else if (start == end) {
+ break;
+ }
old_start = end;
}
diff --git a/test/lua/unit/regxep.lua b/test/lua/unit/regxep.lua
index d0b1c422f..0bb4db935 100644
--- a/test/lua/unit/regxep.lua
+++ b/test/lua/unit/regxep.lua
@@ -68,6 +68,9 @@ context("Regexp unit tests", function()
{'\\s', ' one two ', {'one', 'two'}}, -- multiple delimiters
{'\\s', ' one ', {'one'}}, -- multiple delimiters
{'[:,]', ',,,:::one,two,,', {'one', 'two'}}, -- multiple delimiters
+ {'[\\|\\s]', '16265 | 1.1.1.0/22 | TR | ripencc | 2014-02-28',
+ {'16265', '1.1.1.0/22', 'TR', 'ripencc', '2014-02-28'}}, -- practical
+ {'|', '16265 | 1.1.1.0/22 | TR | ripencc | 2014-02-28', {}} -- bad re
}
for _,c in ipairs(cases) do