]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Rework DMARC to correctly handle spaces in DMARC records
authorThomas Oettli <spacefreak@noop.ch>
Thu, 12 Sep 2024 16:43:10 +0000 (18:43 +0200)
committerThomas Oettli <spacefreak@noop.ch>
Thu, 12 Sep 2024 16:43:10 +0000 (18:43 +0200)
Issue: #4906

lualib/plugins/dmarc.lua

index 38977ff58ae03cede74e360030cce65bc9848c01..b05a3a0ef69c8dafc3ca5ab48a9c61cb3f81e9d3 100644 (file)
@@ -239,9 +239,9 @@ local function gen_dmarc_grammar()
   local lpeg = require "lpeg"
   lpeg.locale(lpeg)
   local space = lpeg.space ^ 0
-  local name = lpeg.C(lpeg.alpha ^ 1) * space
-  local sep = space * (lpeg.S("\\;") * space) + (lpeg.P(lpeg.graph - lpeg.P(',')) * lpeg.space ^ 1)
-  local value = lpeg.C(lpeg.P(lpeg.P(lpeg.graph + lpeg.space) - sep) ^ 1)
+  local name = lpeg.C(lpeg.alpha ^ 1)
+  local sep = space * lpeg.S("\\;") * space
+  local value = lpeg.C(lpeg.P(lpeg.P((lpeg.space ^ 1) * lpeg.graph + lpeg.P(lpeg.graph)) - sep) ^ 1)
   local pair = lpeg.Cg(name * "=" * space * value) * sep ^ -1
   local list = lpeg.Cf(lpeg.Ct("") * pair ^ 0, rawset)
   local version = lpeg.P("v") * space * lpeg.P("=") * space * lpeg.P("DMARC1")