]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Selectors: Filter nil elements in lists
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Feb 2021 10:45:59 +0000 (10:45 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Feb 2021 10:45:59 +0000 (10:45 +0000)
lualib/lua_selectors/init.lua

index cc44d0b017d4ac7dc3602ee9f86fffba29faf455..9a4af2e046c9a6664923bae5a1b08ac7d25dc1b0 100644 (file)
@@ -349,13 +349,18 @@ exports.parse_selector = function(cfg, str)
               ret = (inp[method_name](inp, unpack_function(args or E)))
             end
 
+            -- Do not go further
+            if not ret then return nil end
+
             local ret_type = type(ret)
             -- Now apply types heuristic
             if ret_type == 'string' then
               return ret,'string'
-            elseif ret_type == 'table' then
-              -- TODO: we need to ensure that 1) table is numeric 2) table has merely strings
-              return ret,'string_list'
+            elseif ret_type == 'table' and ret[1] ~= nil then
+              local filt_predicate =  fun.filter(function(elt)
+                return elt ~= nil
+              end, ret)
+              return filt_predicate, 'string_list'
             else
               return implicit_tostring(ret_type, ret)
             end