You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2015/01/23 01:43:08 UTC
svn commit: r1654102 - in /spamassassin/trunk: ./ lib/Mail/SpamAssassin/
lib/Mail/SpamAssassin/Conf/ lib/Mail/SpamAssassin/Message/Metadata/
lib/Mail/SpamAssassin/Plugin/ rules/ spamd/ t/
Author: mmartinec
Date: Fri Jan 23 00:43:08 2015
New Revision: 1654102
URL: http://svn.apache.org/r1654102
Log:
Bug 7123: Address some warnings issued by 'use re qw(strict)' in perl 5.21.8
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm
spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FreeMail.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayEval.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
spamassassin/trunk/rules/25_replace.cf
spamassassin/trunk/sa-learn.raw
spamassassin/trunk/spamd/spamd.raw
spamassassin/trunk/t/recreate.t
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Fri Jan 23 00:43:08 2015
@@ -1212,6 +1212,7 @@ sub add_test {
if ($type == $Mail::SpamAssassin::Conf::TYPE_HEAD_TESTS)
{
# RFC 5322 section 3.6.8, ftext printable US-ASCII chars not including ":"
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if ($text =~ /^!?defined\([!-9;-\176]+\)$/) {
# fine, implements 'exists:'
} else {
@@ -1383,8 +1384,8 @@ sub is_regexp_valid {
# interpolation of the $re variable into a code regexp, in order to test the
# security of the regexp. simply using ("" =~ $re) will NOT do that, and
# will therefore open a hole!
- if (eval { ("" =~ m{$re}); 1; }) {
- return 1;
+ { # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
+ if (eval { ("" =~ m{$re}); 1; }) { return 1 }
}
my $err = $@ ne '' ? $@ : "errno=$!"; chomp $err;
$err =~ s/ at .*? line \d.*$//;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm Fri Jan 23 00:43:08 2015
@@ -731,6 +731,7 @@ sub html_text {
# ideas discarded since they would be easy to evade:
# 1. using \w or [A-Za-z] instead of \S or non-punctuation
# 2. exempting certain tags
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if ($text =~ /^[^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/s &&
$self->{text}->[-1] =~ /[^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]\z/s)
{
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Fri Jan 23 00:43:08 2015
@@ -297,18 +297,21 @@ sub new {
last;
}
# should we assume entering a body on encountering invalid header field?
- elsif ($current !~ /^[\041-\071\073-\176]+[ \t]*:/) {
- # A field name MUST be composed of printable US-ASCII characters
- # (i.e., characters that have values between 33 (041) and 126 (176),
- # inclusive), except colon (072). Obsolete header field syntax
- # allowed WSP before a colon.
- if (++$hdr_errors <= 3) {
- # just consume but ignore a few invalid header fields
- } else { # enough is enough...
- $self->{'missing_head_body_separator'} = 1;
- unshift(@message, $current);
- last;
- }
+ else {
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
+ if ($current !~ /^[\041-\071\073-\176]+[ \t]*:/) {
+ # A field name MUST be composed of printable US-ASCII characters
+ # (i.e., characters that have values between 33 (041) and 126 (176),
+ # inclusive), except colon (072). Obsolete header field syntax
+ # allowed WSP before a colon.
+ if (++$hdr_errors <= 3) {
+ # just consume but ignore a few invalid header fields
+ } else { # enough is enough...
+ $self->{'missing_head_body_separator'} = 1;
+ unshift(@message, $current);
+ last;
+ }
+ }
}
# start collecting a new header field
@@ -840,6 +843,7 @@ sub _parse_multipart {
# if the line after the opening boundary isn't a header, flag it.
# we need to make sure that there's actually another line though.
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if ($line+1 < $tmp_line && $body->[$line+1] !~ /^[\041-\071\073-\176]+:/) {
$self->{'missing_mime_headers'} = 1;
}
@@ -920,6 +924,7 @@ sub _parse_multipart {
# but this causes problems with horizontal lines when the boundary is
# made up of dashes as well, etc.
if (defined $boundary) {
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if ($line =~ /^--\Q${boundary}\E--\s*$/) {
# Make a note that we've seen the end boundary
$self->{mime_boundary_state}->{$boundary}--;
@@ -944,6 +949,7 @@ sub _parse_multipart {
if (!$in_body) {
# s/\s+$//; # bug 5127: don't clean this up (yet)
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if (/^[\041-\071\073-\176]+[ \t]*:/) {
if ($header) {
my ( $key, $value ) = split ( /:\s*/, $header, 2 );
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm Fri Jan 23 00:43:08 2015
@@ -1177,7 +1177,7 @@ sub parse_received_line {
# logging a little more.
if (/^\S+ by \S+ \(.{0,100}\) with qmail-scanner/) {
$envfrom =~ s/^\s*<*//gs; $envfrom =~ s/>*\s*$//gs;
- $envfrom =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
+ $envfrom =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
$self->{qmail_scanner_env_from} = $envfrom; # hack!
return 0;
}
@@ -1307,12 +1307,12 @@ enough:
# presence, though. NOTE: this means "[1.2.3.4]" IP addr HELO
# strings, which are legit by RFC-2821, look like "!1.2.3.4!".
# still useful though.
- $ip =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
- $rdns =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
- $helo =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
- $by =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
- $ident =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
- $envfrom =~ s/[\s\0\#\[\]\(\)\<\>\|]/!/gs;
+ $ip =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
+ $rdns =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
+ $helo =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
+ $by =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
+ $ident =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
+ $envfrom =~ s/[\s\000\#\[\]\(\)\<\>\|]/!/gs;
my $relay = {
ip => $ip,
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Fri Jan 23 00:43:08 2015
@@ -2398,7 +2398,7 @@ sub _get_parsed_uri_list {
if ($uri =~ /^mailto:/i) {
# skip a mail link that does not have a valid TLD or other than one @ after decoding any URLEncoded characters
- $uri = Mail::SpamAssassin::Util::url_encode($uri) if ($uri =~ /\%(?:2[1-9a-fA-F]|[3-6][0-9a-fA-f]|7[0-9a-eA-E])/);
+ $uri = Mail::SpamAssassin::Util::url_encode($uri) if ($uri =~ /\%(?:2[1-9a-fA-F]|[3-6][0-9a-fA-F]|7[0-9a-eA-E])/);
next if ($uri !~ /^[^@]+@[^@]+$/);
my $domuri = Mail::SpamAssassin::Util::uri_to_domain($uri);
next unless $domuri;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm Fri Jan 23 00:43:08 2015
@@ -111,6 +111,7 @@ been performed.
package Mail::SpamAssassin::Plugin::ASN;
use strict;
+use warnings;
use re 'taint';
use Mail::SpamAssassin;
use Mail::SpamAssassin::Plugin;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FreeMail.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FreeMail.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FreeMail.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/FreeMail.pm Fri Jan 23 00:43:08 2015
@@ -1,5 +1,6 @@
package Mail::SpamAssassin::Plugin::FreeMail;
use strict;
+use warnings;
my $VERSION = 2.002;
### About:
@@ -146,7 +147,9 @@ my $email_whitelist = qr/
# skip replyto check when envelope sender is
# allow <> for now
-my $skip_replyto_envfrom = qr/
+my $skip_replyto_envfrom;
+{ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
+ $skip_replyto_envfrom = qr/
(?:
^(?:post|host|domain)master
| ^double-bounce
@@ -156,6 +159,7 @@ my $skip_replyto_envfrom = qr/
| .+=.+
)\@
/xi;
+}
sub dbg { Mail::SpamAssassin::Plugin::dbg ("FreeMail: @_"); }
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm Fri Jan 23 00:43:08 2015
@@ -399,6 +399,7 @@ sub _check_attachments {
# except NUL or a free-standing CR. anything else is a violation of
# the definition of charset="us-ascii".
if ($ctype eq 'text/plain' && (!defined $charset || $charset eq 'us-ascii')) {
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if (m/[\x00\x0d\x80-\xff]+/) {
if (would_log('dbg', 'eval')) {
my $str = $_;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayEval.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayEval.pm Fri Jan 23 00:43:08 2015
@@ -88,6 +88,7 @@ sub check_for_numeric_helo {
my $IP_ADDRESS = IPV4_ADDRESS;
my $IP_PRIVATE = IP_PRIVATE;
local $1;
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
if ($rcvd =~ /\bhelo=($IP_ADDRESS)(?=[\000-\040,;\[()<>]|\z)/i # Bug 5878
&& $1 !~ /$IP_PRIVATE/) {
return 1;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm Fri Jan 23 00:43:08 2015
@@ -238,7 +238,7 @@ sub untaint_file_path {
local ($1);
# Barry Jaspan: allow ~ and spaces, good for Windows. Also return ''
# if input is '', as it is a safe path.
- my $chars = '-_A-Za-z\xA0-\xFF0-9\.\%\@\=\+\,\/\\\:';
+ my $chars = '-_A-Za-z0-9\xA0-\xFF\.\%\@\=\+\,\/\\\:';
my $re = qr/^\s*([$chars][${chars}~ ]*)$/o;
if ($path =~ $re) {
@@ -1040,6 +1040,7 @@ sub url_encode {
}
# other stuff
else {
+ # no re "strict"; # since perl 5.21.8
# 0x00-0x20, 0x7f-0xff, ", %, <, >
s/([\000-\040\177-\377\042\045\074\076])
/push(@encoded, $1) && sprintf "%%%02x", unpack("C",$1)/egx;
Modified: spamassassin/trunk/rules/25_replace.cf
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rules/25_replace.cf?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/rules/25_replace.cf (original)
+++ spamassassin/trunk/rules/25_replace.cf Fri Jan 23 00:43:08 2015
@@ -27,7 +27,7 @@
ifplugin Mail::SpamAssassin::Plugin::ReplaceTags
-replace_tag A (?:[gra\@\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xe4\xe3\xe2\xe0\xe1\xe2\xe3\xe4\xe5\xe60o]|[\xce][\x86\x91\x94\x9b\xac\xb1]|[\xd0][\x90\xb0]|[\xd1][\xa6\xa7]|[\xd3][\x90\x91\x92\x93]|[\xe1][\x8e][\xaa])
+replace_tag A (?:[gra\@\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xe4\xe3\xe2\xe0\xe1\xe2\xe3\xe4\xe5\xe6o0]|[\xce][\x86\x91\x94\x9b\xac\xb1]|[\xd0][\x90\xb0]|[\xd1][\xa6\xa7]|[\xd3][\x90\x91\x92\x93]|[\xe1][\x8e][\xaa])
replace_tag B (?:[b8]|[\xce][\x92\xb2]|[\xcf][\x90\xb8]|[\xd0][\x91\x92\xac\xb1\xb2]|[\xd1][\x8a\x8c\xa2\xa3]|[\xd2][\x8c\x8d])
replace_tag C (?:[ck\xc7\xe7@]|[\xc3][\x87]|[\xc4][\x86\x87\x88\x89\x8a\x8b\x8c\x8d]|[\xcf][\x82\x9a\x9b\xb2\xb9\xbe]|[\xd0][\xa1]|[\xd1][\x81]|[\xd2][\x80\x81\xaa\xab]|[\xd5][\x87]|&\#(?:1(?:0(?:10|17|2[123]|57|89)|1(?:52|53|94|95)|99)|2(?:31|6[2-9])|39[12]|x(?:3(?:f2|f9|fe)|4(?:21|41|80|81|aa|ab)));)
replace_tag D (?:[d\xd0]|[\xd4][\x80\x81]|[\xd5][\xaa])
Modified: spamassassin/trunk/sa-learn.raw
URL: http://svn.apache.org/viewvc/spamassassin/trunk/sa-learn.raw?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/sa-learn.raw (original)
+++ spamassassin/trunk/sa-learn.raw Fri Jan 23 00:43:08 2015
@@ -17,6 +17,7 @@
# </...@LICENSE>
use strict;
+use warnings;
use bytes;
use Errno qw(EBADF);
Modified: spamassassin/trunk/spamd/spamd.raw
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamd/spamd.raw?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/spamd/spamd.raw (original)
+++ spamassassin/trunk/spamd/spamd.raw Fri Jan 23 00:43:08 2015
@@ -1810,6 +1810,7 @@ sub parse_msgids {
my $rmsgid = $mail->get_pristine_header("Resent-Message-Id");
foreach my $id ((\$msgid, \$rmsgid)) {
if ( $$id ) {
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
while ( $$id =~ s/\([^\(\)]*\)// )
{ } # remove comments and
$$id =~ s/^\s+|\s+$//g; # leading and trailing spaces
@@ -1987,9 +1988,11 @@ sub check {
"rport=".$remote_port);
{
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
my $safe = $msgid; $safe =~ s/[\x00-\x20\s,]/_/gs; push(@extra, "mid=$safe");
}
if ($rmsgid) {
+ # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
my $safe = $rmsgid; $safe =~ s/[\x00-\x20\s,]/_/gs; push(@extra, "rmid=$safe");
}
if (defined $status->{bayes_score}) {
@@ -2273,12 +2276,15 @@ sub parse_headers {
sub got_user_header {
my ( $client, $header, $value ) = @_;
- if ( $value !~ /^([\x20-\xFF]*)$/ ) {
- protocol_error("(User header contains control chars)");
- return 0;
+ { # no re "strict"; # since perl 5.21.8: Ranges of ASCII printables...
+ local $1;
+ if ( $value !~ /^([\x20-\xFF]*)$/ ) {
+ protocol_error("(User header contains control chars)");
+ return 0;
+ }
+ $current_user = $1;
}
- $current_user = $1;
if ($opt{'auth-ident'} && !auth_ident($current_user)) {
return 0;
}
Modified: spamassassin/trunk/t/recreate.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/recreate.t?rev=1654102&r1=1654101&r2=1654102&view=diff
==============================================================================
--- spamassassin/trunk/t/recreate.t (original)
+++ spamassassin/trunk/t/recreate.t Fri Jan 23 00:43:08 2015
@@ -32,7 +32,9 @@ $SIG{'__WARN__'} = sub {
print STDERR @_;
# certain warnings can be ignored for this test
- if ($_[0] =~ m{plugin: failed to parse plugin.*: Can.t locate })
+ if ($_[0] =~ m{plugin: failed to parse plugin.*: Can.t locate } ||
+ $_[0] =~ m{is more clearly written simply as .* in regex} ||
+ $_[0] =~ m{Ranges of ASCII printables should be some subset of .* in regex})
{
print STDERR "[ignored warning, not recreate-related]\n";
} else {