You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2021/04/24 07:20:25 UTC

svn commit: r1889138 - /spamassassin/trunk/lib/Mail/SpamAssassin.pm

Author: hege
Date: Sat Apr 24 07:20:25 2021
New Revision: 1889138

URL: http://svn.apache.org/viewvc?rev=1889138&view=rev
Log:
Validate addresses in find_all_addrs_in_line

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

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin.pm?rev=1889138&r1=1889137&r2=1889138&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Sat Apr 24 07:20:25 2021
@@ -2268,6 +2268,8 @@ sub find_all_addrs_in_mail {
 sub find_all_addrs_in_line {
   my ($self, $line) = @_;
 
+  return () unless defined $line;
+
   # a more permissive pattern based on "dot-atom" as per RFC2822
   my $ID_PATTERN   = qr/[-a-zA-Z0-9_\+\:\=\!\#\$\%\&\*\^\?\{\}\|\~\/\.]+/;
   my $HOST_PATTERN = qr/[-a-zA-Z0-9_\+\:\/]+/;
@@ -2276,9 +2278,12 @@ sub find_all_addrs_in_line {
   my %seen;
   while ($line =~ s/(?:mailto:)?\s*
 	      ($ID_PATTERN \@
-	      $HOST_PATTERN(?:\.$HOST_PATTERN)+)//oix) 
+	      ($HOST_PATTERN(?:\.$HOST_PATTERN)+))//oix) 
   {
     my $addr = $1;
+    my $host = $2;
+    next unless Mail::SpamAssassin::Util::is_fqdn_valid($host);
+    next unless $self->{registryboundaries}->is_domain_valid($host);
     $addr =~ s/^mailto://;
     next if (defined ($seen{$addr})); $seen{$addr} = 1;
     push (@addrs, $addr);