]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix gpg parts misdetection
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 8 Jan 2020 16:07:47 +0000 (16:07 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 8 Jan 2020 16:07:47 +0000 (16:07 +0000)
Issue: #3205

rules/misc.lua

index 7d36822715d5beae847e32b3aca2c7166133670a..5dcf6ea0501c432ddae0beed96a2bdb44fc78afd 100644 (file)
@@ -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