]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Relax arguments grammar for selectors
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 16 Nov 2023 15:32:35 +0000 (15:32 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 16 Nov 2023 15:32:35 +0000 (15:32 +0000)
lualib/lua_selectors/init.lua

index 811c5cd50319b4eea588026154fef48cfd54de04..22877f5136296d0cddf4b7a07f27d20a21a8123f 100644 (file)
@@ -243,10 +243,14 @@ local function make_grammar()
   local utf8_high = l.R("\194\223") * cont
       + l.R("\224\239") * cont * cont
       + l.R("\240\244") * cont * cont * cont
-  local atom = l.C((l.R("az") + l.R("AZ") + l.R("09") + l.S("_-") + utf8_high) ^ 1)
+  local atom_start = (l.R("az") + l.R("AZ") + l.R("09") + utf8_high) ^ 1
+  local atom_end = (l.R("az") + l.R("AZ") + l.R("09") + l.S "-_" + utf8_high) ^ 1
+  local atom_mid = (1 - l.S("'\r\n\f\\,)(}{= " .. '"')) ^ 1
+  local atom_argument = l.C(atom_start * atom_mid ^ 0 * atom_end ^ 0) -- We allow more characters for the arguments
+  local atom = l.C(atom_start * atom_end ^ 0) -- We are more strict about selector names itself
   local singlequoted_string = l.P "'" * l.C(((1 - l.S "'\r\n\f\\") + (l.P '\\' * 1)) ^ 0) * "'"
   local doublequoted_string = l.P '"' * l.C(((1 - l.S '"\r\n\f\\') + (l.P '\\' * 1)) ^ 0) * '"'
-  local argument = atom + singlequoted_string + doublequoted_string
+  local argument = atom_argument + singlequoted_string + doublequoted_string
   local dot = l.P(".")
   local semicolon = l.P(":")
   local obrace = "(" * spc