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 2013/04/10 19:41:57 UTC

svn commit: r1466584 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Message/Metadata/Received.pm NetSet.pm

Author: mmartinec
Date: Wed Apr 10 17:41:57 2013
New Revision: 1466584

URL: http://svn.apache.org/r1466584
Log:
adjust parsing of zone_id in scoped IPv6 address according to RFC 6874

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/NetSet.pm

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=1466584&r1=1466583&r2=1466584&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata/Received.pm Wed Apr 10 17:41:57 2013
@@ -1290,7 +1290,9 @@ enough:
   
   $ip =~ s/^ipv6://i;   # remove "IPv6:" prefix
   $ip =~ s/^\[//; $ip =~ s/\]\z//;
-  $ip =~ s/%[A-Z0-9:._-]*\z//si;  # scoped address? remove interface specs
+
+  # IPv6 Scoped Address (RFC 4007, RFC 6874, RFC 3986 "unreserved" charset)
+  $ip =~ s/%[A-Z0-9._~-]*\z//si;  # scoped address? remove <zone_id>
 
   # remove "::ffff:" prefix from IPv4-mapped-in-IPv6 addresses,
   # so we can treat them simply as IPv4 addresses

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/NetSet.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/NetSet.pm?rev=1466584&r1=1466583&r2=1466584&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/NetSet.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/NetSet.pm Wed Apr 10 17:41:57 2013
@@ -98,7 +98,8 @@ sub add_cidr {
     $cidr = $1  if $cidr =~ /^ \[ ( [^\]]* ) \] \z/xs;
 
     my $scope;
-    if ($cidr =~ s/ % ( [A-Z0-9:._-]* ) \z //xsi) {  # link-local scope?
+    # IPv6 Scoped Address (RFC 4007, RFC 6874, RFC 3986 "unreserved" charset)
+    if ($cidr =~ s/ % ( [A-Z0-9._~-]* ) \z //xsi) {  # scope <zone_id> ?
       $scope = $1;  # interface specification
       # discard interface specification, currently just ignored
       info("netset: ignoring interface scope '%%%s' in IP address %s",