]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Properly parse expressions atoms
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 2 Jun 2022 20:23:12 +0000 (21:23 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 2 Jun 2022 20:23:12 +0000 (21:23 +0100)
Issue: #4181

lualib/lua_maps_expressions.lua
src/plugins/lua/force_actions.lua
src/plugins/lua/multimap.lua
src/plugins/lua/settings.lua
src/plugins/lua/spamassassin.lua

index 6a2532bf4d3ebec87679fdaaae71e6d656a1eb9c..0d030b4c4c42268ce291b11141a5771d8cf3c656 100644 (file)
@@ -174,7 +174,7 @@ local function create(cfg, obj, module_name)
   -- Now process and parse expression
   local function parse_atom(str)
     local atom = table.concat(fun.totable(fun.take_while(function(c)
-      if string.find(', \t()><+!|&\n', c) then
+      if string.find(', \t()><+!|&\n', c, 1, true) then
         return false
       end
       return true
index 4704b849beea8e4d9900620958610557e5cb594f..c0c023faed64aff463b1db02ffd237c20b263c83 100644 (file)
@@ -38,7 +38,7 @@ local function gen_cb(params)
 
   local function parse_atom(str)
     local atom = table.concat(fun.totable(fun.take_while(function(c)
-      if string.find(', \t()><+!|&\n', c) then
+      if string.find(', \t()><+!|&\n', c, 1, true) then
         return false
       end
       return true
index edc54443d6c85349cfa78ebb2c3a49a9ec77e3b6..31891fc6a07b380b216165c6255f98e8a8d5a49d 100644 (file)
@@ -1195,7 +1195,7 @@ local function add_multimap_rule(key, newrule)
 
       local function parse_atom(str)
         local atom = table.concat(fun.totable(fun.take_while(function(c)
-          if string.find(', \t()><+!|&\n', c) then
+          if string.find(', \t()><+!|&\n', c, 1, true) then
             return false
           end
           return true
index ead8ced8eaa87b14b89c780da08fd07abba2ec0c..94e1b23270c32c043d0c5ca1309f186eb59095b8 100644 (file)
@@ -848,7 +848,7 @@ local function process_settings_table(tbl, allow_ids, mempool, is_static)
 
       if not checks[safe_key] then
         checks[safe_key] = cond
-        aliases[safe_key] = true
+        aliases[full_key] = true
       end
 
       return safe_key
@@ -943,7 +943,11 @@ local function process_settings_table(tbl, allow_ids, mempool, is_static)
 
     -- Count checks and create Rspamd expression from a set of rules
     local nchecks = 0
-    for _,_ in pairs(checks) do nchecks = nchecks + 1 end
+    for k,_ in pairs(checks) do
+      if not aliases[k] then
+        nchecks = nchecks + 1
+      end
+    end
 
     if nchecks > 0 then
       -- Now we can deal with the expression!
@@ -970,7 +974,7 @@ local function process_settings_table(tbl, allow_ids, mempool, is_static)
       -- Parse expression's sanity
       local function parse_atom(str)
         local atom = table.concat(fun.totable(fun.take_while(function(c)
-          if string.find(', \t()><+!|&\n', c) then
+          if string.find(', \t()><+!|&\n', c, 1, true) then
             return false
           end
           return true
index 2e332d198bab4b6236efb68c13a24ee77df2f5bc..c98203fb630dcdd1ccd7c3db9989d4bc48e1ebf6 100644 (file)
@@ -1170,7 +1170,7 @@ end
 
 local function parse_atom(str)
   local atom = table.concat(fun.totable(fun.take_while(function(c)
-    if string.find(', \t()><+!|&\n', c) then
+    if string.find(', \t()><+!|&\n', c, 1, true) then
       return false
     end
     return true