summaryrefslogtreecommitdiffstats
path: root/rules
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-01-08 16:07:47 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-01-08 16:07:47 +0000
commit25fbf9a11b80c3a7ac2ecffbbd6c35760393c7df (patch)
treeb683bfa7093b45e131244c7f0f04d5b3c289e649 /rules
parent4ae4107e61fa6eef71b4c84625d1df68849233d4 (diff)
downloadrspamd-25fbf9a11b80c3a7ac2ecffbbd6c35760393c7df.tar.gz
rspamd-25fbf9a11b80c3a7ac2ecffbbd6c35760393c7df.zip
[Fix] Fix gpg parts misdetection
Issue: #3205
Diffstat (limited to 'rules')
-rw-r--r--rules/misc.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/rules/misc.lua b/rules/misc.lua
index 7d3682271..5dcf6ea05 100644
--- a/rules/misc.lua
+++ b/rules/misc.lua
@@ -685,12 +685,14 @@ local check_encrypted_name = rspamd_config:register_symbol{
local function check_part(part)
if part:is_multipart() then
local children = part:get_children() or {}
+ local text_kids = {}
for _,cld in ipairs(children) do
if cld:is_multipart() then
check_part(cld)
elseif cld:is_text() then
seen_text = true
+ text_kids[#text_kids + 1] = cld
else
local type,subtype,_ = cld:get_type_full()
@@ -712,6 +714,17 @@ local check_encrypted_name = rspamd_config:register_symbol{
end
end
end
+ if seen_text and seen_encrypted then
+ -- Ensure that our seen text is not really part of pgp #3205
+ for _,tp in ipairs(text_kids) do
+ local t,_ = tp:get_type()
+ seen_text = false -- reset temporary
+ if t and t == 'text' then
+ seen_text = true
+ break
+ end
+ end
+ end
end
end
end