]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix re matching when len == 0
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Sep 2019 10:14:46 +0000 (11:14 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Sep 2019 10:14:46 +0000 (11:14 +0100)
src/libutil/map_helpers.c
src/libutil/multipattern.c
src/lua/lua_regexp.c

index 964e4d98c6ec7be2ceb3229bec15c00f6ad066f5..aaf771b5c674bb51dc554ad5c395ba2cb7230436 100644 (file)
@@ -1252,12 +1252,12 @@ rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
        gboolean validated = FALSE;
        struct rspamd_map_helper_value *val;
 
-       g_assert (in != NULL);
-
        if (map == NULL || map->regexps == NULL || len == 0) {
                return NULL;
        }
 
+       g_assert (in != NULL);
+
        if (map->map_flags & RSPAMD_REGEXP_MAP_FLAG_UTF) {
                if (g_utf8_validate (in, len, NULL)) {
                        validated = TRUE;
index 363cd800f97d041ba554444a6a330ecb3c435a69..6eec009b34011d83cbc25b83156265428fb226ce 100644 (file)
@@ -611,7 +611,7 @@ rspamd_multipattern_lookup (struct rspamd_multipattern *mp,
 
        g_assert (mp != NULL);
 
-       if (mp->cnt == 0 || !mp->compiled) {
+       if (mp->cnt == 0 || !mp->compiled || len == 0) {
                return 0;
        }
 
index 95f40f8f0ab434d61408463890207ddb1a983b88..a677f7195e010a09f924c782a114f30fce6d36a0 100644 (file)
@@ -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) {