You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by gb...@apache.org on 2024/07/22 08:31:01 UTC

svn commit: r1919451 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm

Author: gbechis
Date: Mon Jul 22 08:31:01 2024
New Revision: 1919451

URL: http://svn.apache.org/viewvc?rev=1919451&view=rev
Log:
extract URIs from rtf files

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm?rev=1919451&r1=1919450&r2=1919451&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/OLEVBMacro.pm Mon Jul 22 08:31:01 2024
@@ -795,6 +795,20 @@ sub _check_macrotype_doc {
 
   return if !defined $data || $data eq '';
 
+  # check uris in rtf file
+  if(_is_rtf_file($name, $data)) {
+    # do not read the whole file, it might be huge
+    my $tdata = substr($data, 0, 200000);
+    foreach (split(/\n/, $tdata)) {
+      if(/HYPERLINK "(.*)"/) {
+        my $uri = $1;
+        dbg("Found uri $uri in file $name");
+        $pms->add_uri_detail_list($uri);
+      } 
+    } 
+  }
+
+  # return if the file is not a zip file
   return unless _is_zip_file($name, $data);
   my $zip = _open_zip_handle($data);
   return unless $zip;
@@ -950,6 +964,16 @@ sub _is_zip_file {
     return 1;
   }
 
+  return 0;
+}
+
+sub _is_rtf_file {
+  my ($name, $data) = @_;
+
+  if (index($data, '{\rtf1') == 0 || $name =~ /\.rtf$/i) {
+    return 1;
+  }
+
   return 0;
 }