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 2019/07/07 11:06:23 UTC
svn commit: r1862688 - in /spamassassin/trunk/lib/Mail/SpamAssassin:
Conf/Parser.pm Plugin/DKIM.pm Plugin/FromNameSpoof.pm Plugin/SPF.pm
Plugin/VBounce.pm Plugin/WLBLEval.pm Plugin/WhiteListSubject.pm
Author: hege
Date: Sun Jul 7 11:06:22 2019
New Revision: 1862688
URL: http://svn.apache.org/viewvc?rev=1862688&view=rev
Log:
Use compile_regex for addrlist entries
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FromNameSpoof.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/VBounce.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Sun Jul 7 11:06:22 2019
@@ -1427,7 +1427,12 @@ sub add_to_addrlist {
$re =~ s/([^\*\?_a-zA-Z0-9])/\\$1/g; # escape any possible metachars
$re =~ tr/?/./; # "?" -> "."
$re =~ s/\*+/\.\*/g; # "*" -> "any string"
- $conf->{$singlelist}->{$addr} = "^${re}\$";
+ my ($rec, $err) = compile_regexp("^${re}\$", 0);
+ if (!$rec) {
+ warn "could not compile $singlelist '$addr': $err";
+ return;
+ }
+ $conf->{$singlelist}->{$addr} = $rec;
}
}
@@ -1446,7 +1451,12 @@ sub add_to_addrlist_rcvd {
$re =~ s/([^\*\?_a-zA-Z0-9])/\\$1/g; # escape any possible metachars
$re =~ tr/?/./; # "?" -> "."
$re =~ s/\*+/\.\*/g; # "*" -> "any string"
- $conf->{$listname}->{$addr}{re} = "^${re}\$";
+ my ($rec, $err) = compile_regexp("^${re}\$", 0);
+ if (!$rec) {
+ warn "could not compile $listname '$addr': $err";
+ return;
+ }
+ $conf->{$listname}->{$addr}{re} = $rec;
$conf->{$listname}->{$addr}{domain} = [ $domain ];
}
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm Sun Jul 7 11:06:22 2019
@@ -1193,12 +1193,12 @@ sub _wlcheck_acceptable_signature {
foreach my $author (@{$pms->{dkim_author_addresses}}) {
foreach my $white_addr (keys %$wl_ref) {
my $wl_addr_ref = $wl_ref->{$white_addr};
- my $re = qr/$wl_addr_ref->{re}/i;
+ my $re = $wl_addr_ref->{re};
# dbg("dkim: WL %s %s, d: %s", $wl, $white_addr,
# join(", ", map { $_ eq '' ? "''" : $_ } @{$wl_addr_ref->{domain}}));
- if ($author =~ $re) {
+ if (lc($author) =~ $re) {
foreach my $sdid (@{$wl_addr_ref->{domain}}) {
- push(@$acceptable_sdid_tuples_ref, [$author,$sdid,$wl,$re]);
+ push(@$acceptable_sdid_tuples_ref, [$author,$sdid,$wl,$white_addr]);
}
}
}
@@ -1216,8 +1216,8 @@ sub _wlcheck_author_signature {
foreach my $white_addr (keys %$wl_ref) {
my $re = $wl_ref->{$white_addr};
# dbg("dkim: WL %s %s", $wl, $white_addr);
- if ($author =~ $re) {
- push(@$acceptable_sdid_tuples_ref, [$author,undef,$wl,$re]);
+ if (lc($author) =~ $re) {
+ push(@$acceptable_sdid_tuples_ref, [$author,undef,$wl,$white_addr]);
}
}
}
@@ -1257,8 +1257,8 @@ sub _wlcheck_list {
my %tried_authors;
foreach my $entry (@$acceptable_sdid_tuples_ref) {
- my($author, $acceptable_sdid, $wl, $re) = @$entry;
- # $re and $wl are here for logging purposes only, $re already checked.
+ my($author, $acceptable_sdid, $wl, $white_addr) = @$entry;
+ # $white_addr and $wl are here for logging purposes only, already checked.
# The $acceptable_sdid is a verifier-acceptable signing domain
# identifier (to be matched against a 'd' tag in signatures).
# When $acceptable_sdid is undef or an empty string it implies
@@ -1299,10 +1299,10 @@ sub _wlcheck_list {
if (would_log("dbg","dkim")) {
if ($sdid eq $author_domain) {
dbg("dkim: %s author domain signature by %s, MATCHES %s %s",
- $info, $sdid, $wl, $re);
+ $info, $sdid, $wl, $white_addr);
} else {
dbg("dkim: %s third-party signature by %s, author domain %s, ".
- "MATCHES %s %s", $info, $sdid, $author_domain, $wl, $re);
+ "MATCHES %s %s", $info, $sdid, $author_domain, $wl, $white_addr);
}
}
# a defined value indicates at least a match, not necessarily valid
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FromNameSpoof.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FromNameSpoof.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FromNameSpoof.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FromNameSpoof.pm Sun Jul 7 11:06:22 2019
@@ -411,8 +411,7 @@ sub _find_address_owner
my ($self, $check, $list_refs) = @_;
foreach my $owner (keys %{$list_refs}) {
foreach my $white_addr (keys %{$list_refs->{$owner}}) {
- my $regexp = qr/$list_refs->{$owner}{$white_addr}/i;
- if ($check =~ /$regexp/) {
+ if ($check =~ $list_refs->{$owner}{$white_addr}) {
$owner =~ s/^FNS_//i;
return lc $owner;
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm Sun Jul 7 11:06:22 2019
@@ -793,7 +793,7 @@ sub _wlcheck {
return 1;
} else {
foreach my $regexp (values %{$scanner->{conf}->{$param}}) {
- if ($scanner->{spf_sender} =~ /$regexp/) {
+ if ($scanner->{spf_sender} =~ $regexp) {
return 1;
}
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/VBounce.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/VBounce.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/VBounce.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/VBounce.pm Sun Jul 7 11:06:22 2019
@@ -167,7 +167,7 @@ sub _relay_is_in_list {
if (defined $list->{$relay}) { return 1; }
foreach my $regexp (values %{$list}) {
- if ($relay =~ qr/$regexp/i) {
+ if ($relay =~ $regexp) {
dbg("rules: relay $relay matches regexp: $regexp");
return 1;
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm Sun Jul 7 11:06:22 2019
@@ -328,7 +328,7 @@ sub _check_whitelist_rcvd {
$addr = lc $addr;
my $found_forged = 0;
foreach my $white_addr (keys %{$list}) {
- my $regexp = qr/$list->{$white_addr}{re}/i;
+ my $regexp = $list->{$white_addr}{re};
foreach my $domain (@{$list->{$white_addr}{domain}}) {
# $domain is a second param in whitelist_from_rcvd: a domain name or an IP address
@@ -408,7 +408,7 @@ sub _check_whitelist {
$addr = lc $addr;
if (defined ($list->{$addr})) { return 1; }
foreach my $regexp (values %{$list}) {
- if ($addr =~ qr/$regexp/i) {
+ if ($addr =~ $regexp) {
dbg("rules: address $addr matches whitelist or blacklist regexp: $regexp");
return 1;
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm?rev=1862688&r1=1862687&r2=1862688&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm Sun Jul 7 11:06:22 2019
@@ -44,6 +44,7 @@ similar to the other whitelist_* config
package Mail::SpamAssassin::Plugin::WhiteListSubject;
use Mail::SpamAssassin::Plugin;
+use Mail::SpamAssassin::Util qw(compile_regexp);
use strict;
use warnings;
# use bytes;
@@ -82,11 +83,15 @@ sub set_config {
$value = lc $value;
my $re = $value;
- $re =~ s/[\000\\\(]/_/gs; # paranoia
$re =~ s/([^\*\?_a-zA-Z0-9])/\\$1/g; # escape any possible metachars
$re =~ tr/?/./; # "?" -> "."
$re =~ s/\*+/\.\*/g; # "*" -> "any string"
- $conf->{$key}->{$value} = ${re};
+ my ($rec, $err) = compile_regexp($re, 0);
+ if (!$rec) {
+ warn "could not compile $key '$value': $err";
+ return;
+ }
+ $conf->{$key}->{$value} = $rec;
}});
push(@cmds, {
@@ -98,11 +103,15 @@ sub set_config {
$value = lc $value;
my $re = $value;
- $re =~ s/[\000\\\(]/_/gs; # paranoia
$re =~ s/([^\*\?_a-zA-Z0-9])/\\$1/g; # escape any possible metachars
$re =~ tr/?/./; # "?" -> "."
$re =~ s/\*+/\.\*/g; # "*" -> "any string"
- $conf->{$key}->{$value} = ${re};
+ my ($rec, $err) = compile_regexp($re, 0);
+ if (!$rec) {
+ warn "could not compile $key '$value': $err";
+ return;
+ }
+ $conf->{$key}->{$value} = $rec;
}});
$conf->{parser}->register_commands(\@cmds);
@@ -136,7 +145,7 @@ sub _check_subject {
return 1 if defined($list->{$subject});
foreach my $regexp (values %{$list}) {
- if ($subject =~ qr/$regexp/i) {
+ if ($subject =~ $regexp) {
return 1;
}
}