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 2010/12/13 16:27:13 UTC

svn commit: r1045170 - in /spamassassin/trunk/lib/Mail/SpamAssassin: AutoWhitelist.pm Plugin/DNSEval.pm

Author: mmartinec
Date: Mon Dec 13 15:27:13 2010
New Revision: 1045170

URL: http://svn.apache.org/viewvc?rev=1045170&view=rev
Log:
Bug 6519, use NetAddr::IP::full6 only when available, without bumping up the required version

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm?rev=1045170&r1=1045169&r2=1045170&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm Mon Dec 13 15:27:13 2010
@@ -46,7 +46,7 @@ use warnings;
 use bytes;
 use re 'taint';
 
-use NetAddr::IP 4.000;   # qw(:upper);
+use NetAddr::IP 4.000;
 
 use Mail::SpamAssassin;
 use Mail::SpamAssassin::Logger;
@@ -314,7 +314,7 @@ sub ip_to_awl_key {
     my $origip_obj = NetAddr::IP->new6($origip . '/' . $mask_len);
     if (!defined $origip_obj) {  # invalid IPv6 address
       dbg("auto-whitelist: bad IPv6 address $origip");
-    } else {
+    } elsif (NetAddr::IP->can('full6')) {  # since NetAddr::IP 4.010
       $result = $origip_obj->network->full6;  # string in a canonical form
       $result =~ s/(:0000){1,7}\z/::/;        # compress zero tail
     }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm?rev=1045170&r1=1045169&r2=1045170&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm Mon Dec 13 15:27:13 2010
@@ -17,6 +17,8 @@
 
 package Mail::SpamAssassin::Plugin::DNSEval;
 
+use NetAddr::IP 4.000;
+
 use Mail::SpamAssassin::Plugin;
 use Mail::SpamAssassin::Logger;
 use Mail::SpamAssassin::Constants qw(:ip);
@@ -268,20 +270,24 @@ sub check_rbl_backend {
     local($1,$2,$3,$4);
     foreach (@ips) {
       my $revip;
-      if (/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/) {
+      if (/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\z/) {
         $revip = "$4.$3.$2.$1";
       } elsif (/:/ &&  # triage
                /^ [0-9a-f]{0,4}
                   (?: : [0-9a-f]{0,4} | \. [0-9]{1,3} ){2,9} $/xsi) {
-        # could be an IPv6 address, let NetAddr::IP check the details
-        my $ip_obj = NetAddr::IP->new6($_);
-        if (!defined $ip_obj) {
-          # invalid IPv6 address, $revip remains undefined
+        if (!NetAddr::IP->can('full6')) {  # since NetAddr::IP 4.010
+          info("dns: version of NetAddr::IP is too old, IPv6 not supported");
         } else {
-          # RFC 5782 section 2.4.
-          $revip = lc $ip_obj->network->full6;  # string in a canonical form
-          $revip =~ s/://g;
-          $revip = join('.', reverse split(//,$revip));
+          # looks like an IPv6 address, let NetAddr::IP check the details
+          my $ip_obj = NetAddr::IP->new6($_);
+          if (!defined $ip_obj) {
+            # invalid IPv6 address, $revip remains undefined
+          } else {
+            # RFC 5782 section 2.4.
+            $revip = lc $ip_obj->network->full6;  # string in a canonical form
+            $revip =~ s/://g;
+            $revip = join('.', reverse split(//,$revip));
+          }
         }
       }
       $pms->do_rbl_lookup($rule, $set, $type, $rbl_server,