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 2009/08/18 20:18:25 UTC

svn commit: r805521 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm

Author: mmartinec
Date: Tue Aug 18 18:18:25 2009
New Revision: 805521

URL: http://svn.apache.org/viewvc?rev=805521&view=rev
Log:
Plugin/ASN.pm: don't use raw data from DNS as a regexp

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm?rev=805521&r1=805520&r2=805521&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ASN.pm Tue Aug 18 18:18:25 2009
@@ -76,8 +76,6 @@
 
 =head1 STATUS
 
-Experimental - Dec. 18, 2006
-
 No in-depth analysis of the usefulness of bayes tokenization of ASN data has
 been performed.
 
@@ -153,6 +151,7 @@
       unless (defined $value && $value !~ /^$/) {
         return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
       }
+      local($1,$2,$3);
       unless ($value =~ /^(\S+?)\.?(?:\s+_(\S+)_\s+_(\S+)_)?$/) {
         return $Mail::SpamAssassin::Conf::INVALID_VALUE;
       }
@@ -189,6 +188,7 @@
   } elsif ($relay->{ip_private}) {
     dbg("asn: first external relay is a private IP, skipping ASN check");
   } else {
+    local($1,$2,$3,$4);
     if (defined $relay->{ip} && $relay->{ip} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
       $reversed_ip_quad = "$4.$3.$2.$1";
       dbg("asn: using first external relay IP for lookups: %s", $relay->{ip});
@@ -211,7 +211,8 @@
     }
     next unless $reversed_ip_quad;
   
-    # do the DNS query, have the callback process the result rather than poll for them later
+    # do the DNS query, have the callback process the result
+    # rather than poll for them later
     my $zone_index = $index;
     my $zone = $reversed_ip_quad . '.' . $entry->{zone};
     my $key = "asnlookup-${zone_index}-$entry->{zone}";
@@ -247,19 +248,20 @@
     dbg("asn: %s: lookup result packet: '%s'", $zone, $rr->string);
     if ($rr->type eq 'TXT') {
       my @items = split(/ /, $rr->txtdata);
-      unless ($#items == 2) {
+      unless (@items == 3) {
         dbg("asn: TXT query response format unknown, ignoring zone: %s, ".
             "response: '%s'", $zone, $rr->txtdata);
         next;
       }
-      unless ($scanner->{tag_data}->{$asn_tag} =~ /\bAS$items[0]\b/) {
+      unless ($scanner->{tag_data}->{$asn_tag} =~ /\b\QAS$items[0]\E\b/) {
         if ($scanner->{tag_data}->{$asn_tag}) {
           $scanner->{tag_data}->{$asn_tag} .= " AS$items[0]";
         } else {
           $scanner->{tag_data}->{$asn_tag} = "AS$items[0]";
         }
       }
-      unless ($scanner->{tag_data}->{$route_tag} =~ m{\b$items[1]/$items[2]\b}) {
+      unless ($scanner->{tag_data}->{$route_tag} =~
+              m{\b\Q$items[1]/$items[2]\E\b}) {
         if ($scanner->{tag_data}->{$route_tag}) {
           $scanner->{tag_data}->{$route_tag} .= " $items[1]/$items[2]";
         } else {