From: Vsevolod Stakhov Date: Wed, 8 Jan 2020 16:07:47 +0000 (+0000) Subject: [Fix] Fix gpg parts misdetection X-Git-Tag: 2.3~134 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=25fbf9a11b80c3a7ac2ecffbbd6c35760393c7df;p=thirdparty%2Frspamd.git [Fix] Fix gpg parts misdetection Issue: #3205 --- diff --git a/rules/misc.lua b/rules/misc.lua index 7d36822715..5dcf6ea050 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