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