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;
}