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 {