~ubuntu-branches/ubuntu/utopic/spamassassin/utopic-proposed

« back to all changes in this revision

Viewing changes to debian/patches/90_ipv6_header_support.dpatch

  • Committer: Bazaar Package Importer
  • Author(s): Noah Meyerhans
  • Date: 2010-01-26 22:53:12 UTC
  • mfrom: (1.1.13 upstream) (5.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20100126225312-wkftb10idc1kz2aq
Tags: 3.3.0-1
* New upstream version.
* Switch to dpkg-source 3.0 (quilt) format

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /bin/sh /usr/share/dpatch/dpatch-run
2
 
## 90_ipv6_header_support.dpatch by  <noahm@debian.org>
3
 
##
4
 
## All lines beginning with `## DP:' are a description of the patch.
5
 
## DP: Backport upstream changeset 637123 
6
 
## DP: (http://svn.apache.org/viewvc?view=rev&revision=637123)
7
 
## DP: to add ipv6 support to trusted_networks, internal_networks,
8
 
## DP: whitelist_from_rcvd, msa_networks, etc.
9
 
 
10
 
@DPATCH@
11
 
diff -urNad spamassassin-3.2.5~/INSTALL spamassassin-3.2.5/INSTALL
12
 
--- spamassassin-3.2.5~/INSTALL 2009-08-09 15:42:27.000000000 -0400
13
 
+++ spamassassin-3.2.5/INSTALL  2009-08-09 15:42:28.000000000 -0400
14
 
@@ -198,6 +198,13 @@
15
 
       - version 0.34 or higher on Unix systems
16
 
       - version 0.46 or higher on Windows systems
17
 
 
18
 
+  - NetAddr::IP (from CPAN)
19
 
+
20
 
+    Used to parse IP addresses and IP address ranges for
21
 
+    "trusted_networks".
22
 
+
23
 
+    Debian/Ubuntu: apt-get install libnetaddr-ip-perl
24
 
+
25
 
   - LWP (aka libwww-perl) (from CPAN)
26
 
 
27
 
     This set of modules will include both the LWP::UserAgent and
28
 
diff -urNad spamassassin-3.2.5~/Makefile.PL spamassassin-3.2.5/Makefile.PL
29
 
--- spamassassin-3.2.5~/Makefile.PL     2008-06-10 05:21:07.000000000 -0400
30
 
+++ spamassassin-3.2.5/Makefile.PL      2009-08-09 15:42:28.000000000 -0400
31
 
@@ -216,6 +216,7 @@
32
 
         'Pod::Usage'    => 1.10,          # all versions prior to this do seem to be buggy
33
 
         'HTML::Parser'  => 3.43,          # the HTML code is based on this parser, older versions have utf-8 bugs
34
 
         'Net::DNS'      => (RUNNING_ON_WINDOWS ? 0.46 : 0.34), # bugs in older revs
35
 
+        'NetAddr::IP'   => 0,
36
 
         'Sys::Hostname' => 0,
37
 
         'Time::Local'   => 0,
38
 
         'Errno'         => 0,
39
 
diff -urNad spamassassin-3.2.5~/lib/Mail/SpamAssassin/Conf.pm spamassassin-3.2.5/lib/Mail/SpamAssassin/Conf.pm
40
 
--- spamassassin-3.2.5~/lib/Mail/SpamAssassin/Conf.pm   2009-08-09 15:42:27.000000000 -0400
41
 
+++ spamassassin-3.2.5/lib/Mail/SpamAssassin/Conf.pm    2009-08-09 15:42:28.000000000 -0400
42
 
@@ -983,13 +983,17 @@
43
 
 If a network or host address is prefaced by a C<!> the network or host will be
44
 
 excluded (or included) in a first listed match fashion.
45
 
 
46
 
-Note: 127/8 is always included in trusted_networks, regardless of your config.
47
 
+Note: 127/8 and ::1 are always included in trusted_networks, regardless of
48
 
+your config.
49
 
+
50
 
 
51
 
 Examples:
52
 
 
53
 
    trusted_networks 192.168/16            # all in 192.168.*.*
54
 
    trusted_networks 212.17.35.15          # just that host
55
 
    trusted_networks !10.0.1.5 10.0.1/24   # all in 10.0.1.* but not 10.0.1.5
56
 
+   trusted_networks DEAD:BEEF::/32        # all in that ipv6 prefix
57
 
+
58
 
 
59
 
 This operates additively, so a C<trusted_networks> line after another one
60
 
 will result in all those networks becoming trusted.  To clear out the
61
 
@@ -1074,7 +1078,8 @@
62
 
 Every entry in C<internal_networks> must appear in C<trusted_networks>; in
63
 
 other words, C<internal_networks> is always a subset of the trusted set.
64
 
 
65
 
-Note: 127/8 is always included in internal_networks, regardless of your config.
66
 
+Note: 127/8 and ::1 are always included in internal_networks, regardless of
67
 
+your config.
68
 
 
69
 
 =cut
70
 
 
71
 
@@ -3647,6 +3652,7 @@
72
 
   my ($self) = @_;
73
 
   my $set = Mail::SpamAssassin::NetSet->new();
74
 
   $set->add_cidr ('127/8');
75
 
+  $set->add_cidr ('::1');
76
 
   return $set;
77
 
 }
78
 
 
79
 
diff -urNad spamassassin-3.2.5~/lib/Mail/SpamAssassin/Constants.pm spamassassin-3.2.5/lib/Mail/SpamAssassin/Constants.pm
80
 
--- spamassassin-3.2.5~/lib/Mail/SpamAssassin/Constants.pm      2008-06-10 05:20:22.000000000 -0400
81
 
+++ spamassassin-3.2.5/lib/Mail/SpamAssassin/Constants.pm       2009-08-09 15:42:28.000000000 -0400
82
 
@@ -72,23 +72,96 @@
83
 
 #   3330  = <ftp://ftp.rfc-editor.org/in-notes/rfc3330.txt>
84
 
 #   CYMRU = <http://www.cymru.com/Documents/bogon-list.html>
85
 
 #
86
 
-# Last update
87
 
-#   2005-01-10 Daniel Quinlan - reduced to standard private IP addresses
88
 
+# This also includes IPv6 link-local space, fe80::/10, the IPv4
89
 
+# spaces mapped in IPv6, and the IPv6 host-local address, ::1.
90
 
 #
91
 
 use constant IP_PRIVATE => qr{^(?:
92
 
-  10|                             # 10/8:             Private Use (3330)
93
 
-  127|                            # 127/8:            Private Use (localhost)
94
 
-  169\.254|                       # 169.254/16:       Private Use (APIPA)
95
 
-  172\.(?:1[6-9]|2[0-9]|3[01])|           # 172.16-172.31/16: Private Use (3330)
96
 
-  192\.168                        # 192.168/16:       Private Use (3330)
97
 
-)\.}ox;
98
 
+  (?:   # IPv4 addresses
99
 
+    10|                                    # 10/8:             Private Use (3330)
100
 
+    127|                            # 127/8:            Private Use (localhost)
101
 
+    169\.254|                      # 169.254/16:       Private Use (APIPA)
102
 
+    172\.(?:1[6-9]|2[0-9]|3[01])|   # 172.16-172.31/16: Private Use (3330)
103
 
+    192\.168                       # 192.168/16:       Private Use (3330)
104
 
+    )\..*
105
 
+|
106
 
+  (?:   # IPv6 addresses
107
 
+    # don't use \b here, it hits on :'s
108
 
+    (?:IPv6:    # with optional prefix
109
 
+      | (?<![a-f0-9:])
110
 
+    )
111
 
+    (?:
112
 
+      # IPv4 mapped in IPv6
113
 
+      # note the colon after the 12th byte in each here
114
 
+      (?:
115
 
+        # first 6 (12 bytes) non-zero
116
 
+        (?:0{1,4}:){5}         ffff:
117
 
+        |
118
 
+        # leading zeros omitted (note {0,5} not {1,5})
119
 
+        ::(?:0{1,4}:){0,4}             ffff:
120
 
+        |
121
 
+        # trailing zeros (in the first 6) omitted
122
 
+        (?:0{1,4}:){1,4}:              ffff:
123
 
+        |
124
 
+        # 0000 in second up to (including) fifth omitted
125
 
+        0{1,4}::(?:0{1,4}:){1,3}       ffff:
126
 
+        |
127
 
+        # 0000 in third up to (including) fifth omitted
128
 
+        (?:0{1,4}:){2}:0{1,2}: ffff:
129
 
+        |
130
 
+        # 0000 in fourth up to (including) fifth omitted
131
 
+        (?:0{1,4}:){3}:0:              ffff:
132
 
+        |
133
 
+        # 0000 in fifth omitted
134
 
+        (?:0{1,4}:){4}:                ffff:
135
 
+      )
136
 
+      # and the IPv4 address appended to all of the 12 bytes above
137
 
+      (?:
138
 
+        10|
139
 
+        127|                       
140
 
+        169\.254|                          
141
 
+        172\.(?:1[6-9]|2[0-9]|3[01])|   
142
 
+        192\.168
143
 
+      )\..*
144
 
+
145
 
+    | # or IPv6 link-local address space, fe80::/10
146
 
+      fe[89ab][0-9a-f]:.*
147
 
+
148
 
+    | # or the host-local ::1 addr, as a pure IPv6 address
149
 
+
150
 
+      # all 8 (16 bytes) of them present
151
 
+      (?:0{1,4}:){7}                   0{0,3}1
152
 
+      |
153
 
+      # leading zeros omitted
154
 
+      :(?::0{1,4}){0,6}:               0{0,3}1
155
 
+      |
156
 
+      # 0000 in second up to (including) seventh omitted
157
 
+      0{1,4}:(?::0{1,4}){0,5}: 0{0,3}1
158
 
+      |
159
 
+      # 0000 in third up to (including) seventh omitted
160
 
+      (?:0{1,4}:){2}(?::0{1,4}){0,4}:  0{0,3}1
161
 
+      |
162
 
+      # 0000 in fouth up to (including) seventh omitted
163
 
+      (?:0{1,4}:){3}(?::0{1,4}){0,3}:  0{0,3}1
164
 
+      |
165
 
+      # 0000 in fifth up to (including) seventh omitted
166
 
+      (?:0{1,4}:){4}(?::0{1,4}){0,2}:  0{0,3}1
167
 
+      |
168
 
+      # 0000 in sixth up to (including) seventh omitted
169
 
+      (?:0{1,4}:){5}(?::0{1,4}){0,1}:  0{0,3}1
170
 
+      |
171
 
+      # 0000 in seventh omitted
172
 
+      (?:0{1,4}:){6}:                  0{0,3}1
173
 
+    )
174
 
+    (?![a-f0-9:])
175
 
+  )
176
 
+)}oxi;
177
 
 
178
 
 # backward compatibility
179
 
 use constant IP_IN_RESERVED_RANGE => IP_PRIVATE;
180
 
 
181
 
 # ---------------------------------------------------------------------------
182
 
 # match the various ways of saying "localhost".
183
 
-# 
184
 
+
185
 
 use constant LOCALHOST => qr/
186
 
                    (?:
187
 
                      # as a string
188
 
diff -urNad spamassassin-3.2.5~/lib/Mail/SpamAssassin/Message/Metadata/Received.pm spamassassin-3.2.5/lib/Mail/SpamAssassin/Message/Metadata/Received.pm
189
 
--- spamassassin-3.2.5~/lib/Mail/SpamAssassin/Message/Metadata/Received.pm      2008-06-10 05:20:13.000000000 -0400
190
 
+++ spamassassin-3.2.5/lib/Mail/SpamAssassin/Message/Metadata/Received.pm       2009-08-09 15:42:28.000000000 -0400
191
 
@@ -1205,12 +1205,6 @@
192
 
     dbg("received-header: could not parse IP address from: $_");
193
 
   }
194
 
 
195
 
-  $ip = Mail::SpamAssassin::Util::extract_ipv4_addr_from_string ($ip);
196
 
-  if (!$ip) {
197
 
-    dbg("received-header: could not parse IPv4 address, assuming IPv6");
198
 
-    return 0;   # ignore IPv6 handovers
199
 
-  }
200
 
-
201
 
   # DISABLED: if we cut out localhost-to-localhost SMTP handovers,
202
 
   # we will give FPs on SPF checks -- since the SMTP "MAIL FROM" addr
203
 
   # will be recorded, but we won't have the relays handover recorded
204
 
@@ -1226,6 +1220,14 @@
205
 
   if ($rdns =~ /^unknown$/i) {
206
 
     $rdns = '';                # some MTAs seem to do this
207
 
   }
208
 
+  
209
 
+  $ip =~ s/^\[//; $ip =~ s/\]$//;
210
 
+
211
 
+  $ip =~ s/^ipv6://i;   # remove optional "IPv6:" prefix
212
 
+
213
 
+  # remove "::ffff:" prefix from IPv4-mapped-in-IPv6 addresses,
214
 
+  # so we can treat them as simply IPv4 addresses
215
 
+  $ip =~ s/^0*:0*:(?:0*:)*ffff:(\d+\.\d+\.\d+\.\d+)$/$1/i;
216
 
 
217
 
   $envfrom =~ s/^\s*<*//gs; $envfrom =~ s/>*\s*$//gs;
218
 
   $by =~ s/\;$//;
219
 
diff -urNad spamassassin-3.2.5~/lib/Mail/SpamAssassin/NetSet.pm spamassassin-3.2.5/lib/Mail/SpamAssassin/NetSet.pm
220
 
--- spamassassin-3.2.5~/lib/Mail/SpamAssassin/NetSet.pm 2008-06-10 05:20:22.000000000 -0400
221
 
+++ spamassassin-3.2.5/lib/Mail/SpamAssassin/NetSet.pm  2009-08-09 15:42:28.000000000 -0400
222
 
@@ -21,6 +21,7 @@
223
 
 use strict;
224
 
 use warnings;
225
 
 use bytes;
226
 
+use NetAddr::IP;
227
 
 
228
 
 use Mail::SpamAssassin::Util;
229
 
 use Mail::SpamAssassin::Logger;
230
 
@@ -52,40 +53,40 @@
231
 
   $self->{nets} ||= [ ];
232
 
   my $numadded = 0;
233
 
 
234
 
-  foreach (@nets) {
235
 
-    my $exclude = s/^\s*!// ? 1 : 0;
236
 
-    my ($ip, $bits) = m#^\s*
237
 
-                       ((?:(?:1\d\d|2[0-4]\d|25[0-5]|\d\d|\d)\.){0,3}
238
 
-                           (?:1\d\d|2[0-4]\d|25[0-5]|\d\d|\d)?) (?:(?<!\.)/(\d+))?
239
 
-                     \s*$#x;
240
 
+  foreach my $cidr (@nets) {
241
 
+    my $exclude = ($cidr =~ s/^\s*!//) ? 1 : 0;
242
 
 
243
 
-    my $err = "netset: illegal network address given: '$_'\n";
244
 
+    my $is_ip4 = 0;
245
 
+    if ($cidr =~ /^\d+[\.\/]/) {
246
 
+      if ($cidr =~ /^(\d+)\.(\d+)\.(\d+)\.$/) { $cidr = "$1.$2.$3.0/24"; }
247
 
+      elsif ($cidr =~ /^(\d+)\.(\d+)\.$/) { $cidr = "$1.$2.0.0/16"; }
248
 
+      elsif ($cidr =~ /^(\d+)\.$/) { $cidr = "$1.0.0.0/8"; }
249
 
+      $is_ip4 = 1;
250
 
+    }
251
 
+
252
 
+    my $ip = NetAddr::IP->new($cidr);
253
 
     if (!defined $ip) {
254
 
-      warn $err;
255
 
+      warn "netset: illegal network address given: '$cidr'\n";
256
 
       next;
257
 
     }
258
 
-    elsif ($ip =~ /\.$/) {
259
 
-      # just use string matching; much simpler than doing smart stuff with arrays ;)
260
 
-      if ($ip =~ /^(\d+)\.(\d+)\.(\d+)\.$/) { $ip = "$1.$2.$3.0"; $bits = 24; }
261
 
-      elsif ($ip =~ /^(\d+)\.(\d+)\.$/) { $ip = "$1.$2.0.0"; $bits = 16; }
262
 
-      elsif ($ip =~ /^(\d+)\.$/) { $ip = "$1.0.0.0"; $bits = 8; }
263
 
-      else {
264
 
-       warn $err;
265
 
-       next;
266
 
-      }
267
 
-    }
268
 
 
269
 
-    $bits = 32 if (!defined $bits);
270
 
-
271
 
-    next if ($self->is_net_declared($ip, $bits, $exclude, 0));
272
 
+    # if this is an IPv4 address, create an IPv6 representation, too
273
 
+    my ($ip4, $ip6);
274
 
+    if ($is_ip4) {
275
 
+      $ip4 = $ip;
276
 
+      $ip6 = $self->_convert_ipv4_cidr_to_ipv6($cidr);
277
 
+    } else {
278
 
+      $ip6 = $ip;
279
 
+    }
280
 
 
281
 
-    my $mask = 0xFFffFFff ^ ((2 ** (32-$bits)) - 1);
282
 
+    next if ($self->is_net_declared($ip4, $ip6, $exclude, 0));
283
 
 
284
 
+    # note: it appears a NetAddr::IP object takes up about 279 bytes
285
 
     push @{$self->{nets}}, {
286
 
-      mask    => $mask,
287
 
       exclude => $exclude,
288
 
-      ip      => (Mail::SpamAssassin::Util::my_inet_aton($ip) & $mask),
289
 
-      as_string => $_
290
 
+      ip4     => $ip4,
291
 
+      ip6     => $ip6,
292
 
+      as_string => $cidr
293
 
     };
294
 
     $numadded++;
295
 
   }
296
 
@@ -100,21 +101,41 @@
297
 
   return scalar @{$self->{nets}};
298
 
 }
299
 
 
300
 
+sub _convert_ipv4_cidr_to_ipv6 {
301
 
+  my ($self, $cidr) = @_;
302
 
+
303
 
+  # only do this for IPv4 addresses
304
 
+  return undef unless ($cidr =~ /^\d+[.\/]/);
305
 
+
306
 
+  if ($cidr !~ /\//) {      # no mask
307
 
+    return NetAddr::IP->new6("::ffff:".$cidr);
308
 
+  }
309
 
+
310
 
+  # else we have a CIDR mask specified. use new6() to do this
311
 
+  #
312
 
+  my $ip6 = ""+(NetAddr::IP->new6($cidr));
313
 
+  # 127.0.0.1 -> 0:0:0:0:0:0:7F00:0001/128
314
 
+  # 127/8 -> 0:0:0:0:0:0:7F00:0/104
315
 
+
316
 
+  # now, move that from 0:0:0:0:0:0: space to 0:0:0:0:0:ffff: space
317
 
+  if (!defined $ip6 || $ip6 !~ /^0:0:0:0:0:0:(.*)$/) {
318
 
+    warn "oops! unparseable IPv6 address for $cidr: $ip6";
319
 
+    return undef;
320
 
+  }
321
 
+
322
 
+  return NetAddr::IP->new6("::ffff:$1");
323
 
+}
324
 
+
325
 
 sub _nets_contains_network {
326
 
-  my ($self, $network, $mask, $exclude, $quiet, $netname, $declared) = @_;
327
 
+  my ($self, $net4, $net6, $exclude, $quiet, $netname, $declared) = @_;
328
 
 
329
 
   return 0 unless (defined $self->{nets});
330
 
 
331
 
-  $exclude = 0 if (!defined $exclude);
332
 
-  $quiet = 0 if (!defined $quiet);
333
 
-  $declared = 0 if (!defined $declared);
334
 
-
335
 
   foreach my $net (@{$self->{nets}}) {
336
 
-    # a net can not be contained by a (smaller) net with a larger mask
337
 
-    next if ($net->{mask} > $mask);
338
 
-
339
 
     # check to see if the new network is contained by the old network
340
 
-    if (($network & $net->{mask}) == $net->{ip}) {
341
 
+    my $in4 = defined $net4 && defined $net->{ip4} && $net->{ip4}->contains($net4);
342
 
+    my $in6 = defined $net6 && defined $net->{ip6} && $net->{ip6}->contains($net6);
343
 
+    if ($in4 || $in6) {
344
 
       warn "netset: cannot " . ($exclude ? "exclude" : "include") 
345
 
         . " $netname as it has already been "
346
 
         . ($net->{exclude} ? "excluded" : "included") . "\n" unless $quiet;
347
 
@@ -129,35 +150,38 @@
348
 
 }
349
 
 
350
 
 sub is_net_declared {
351
 
-  my ($self, $network, $bits, $exclude, $quiet) = @_;
352
 
-
353
 
-  my $mask = 0xFFffFFff ^ ((2 ** (32-$bits)) - 1);
354
 
-  my $aton = Mail::SpamAssassin::Util::my_inet_aton($network);
355
 
-
356
 
-  return $self->_nets_contains_network($aton, $mask, $exclude,
357
 
-                $quiet, "$network/$bits", 1);
358
 
+  my ($self, $net4, $net6, $exclude, $quiet) = @_;
359
 
+  return $self->_nets_contains_network($net4, $net6, $exclude,
360
 
+                $quiet, $net4 || $net6, 1);
361
 
 }
362
 
 
363
 
 sub contains_ip {
364
 
   my ($self, $ip) = @_;
365
 
 
366
 
   if (!defined $self->{nets}) { return 0; }
367
 
-  if ($ip !~ m/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { return 0; }
368
 
 
369
 
-  $ip = Mail::SpamAssassin::Util::my_inet_aton($ip);
370
 
+  my ($ip4, $ip6);
371
 
+  if ($ip =~ /^\d+\./) {
372
 
+    $ip4 = NetAddr::IP->new($ip);
373
 
+    $ip6 = $self->_convert_ipv4_cidr_to_ipv6($ip);
374
 
+  } else {
375
 
+    $ip6 = NetAddr::IP->new($ip);
376
 
+  }
377
 
+
378
 
   foreach my $net (@{$self->{nets}}) {
379
 
-    return !$net->{exclude} if (($ip & $net->{mask}) == $net->{ip});
380
 
+    return !$net->{exclude} if
381
 
+        ((defined $ip4 && defined $net->{ip4} && $net->{ip4}->contains($ip4))
382
 
+        || (defined $ip6 && defined $net->{ip6} && $net->{ip6}->contains($ip6)));
383
 
   }
384
 
-  0;
385
 
+  return 0;
386
 
 }
387
 
 
388
 
 sub contains_net {
389
 
   my ($self, $net) = @_;
390
 
-  my $mask    = $net->{mask};
391
 
   my $exclude = $net->{exclude};
392
 
-  my $network = $net->{ip};
393
 
-
394
 
-  return $self->_nets_contains_network($network, $mask, $exclude, 1, "", 0);
395
 
+  my $net4 = $net->{ip4};
396
 
+  my $net6 = $net->{ip6};
397
 
+  return $self->_nets_contains_network($net4, $net6, $exclude, 1, "", 0);
398
 
 }
399
 
 
400
 
 sub clone {
401
 
diff -urNad spamassassin-3.2.5~/t/cidrs.t spamassassin-3.2.5/t/cidrs.t
402
 
--- spamassassin-3.2.5~/t/cidrs.t       2008-06-10 05:21:04.000000000 -0400
403
 
+++ spamassassin-3.2.5/t/cidrs.t        2009-08-09 15:42:28.000000000 -0400
404
 
@@ -17,17 +17,17 @@
405
 
 
406
 
 use strict;
407
 
 use Test;
408
 
-use Mail::SpamAssassin;
409
 
 
410
 
+plan tests => 51;
411
 
+
412
 
+use Mail::SpamAssassin;
413
 
 use Mail::SpamAssassin::NetSet;
414
 
 
415
 
 my $sa = Mail::SpamAssassin->new({
416
 
     rules_filename => "$prefix/rules",
417
 
 });
418
 
 
419
 
-plan tests => 22;
420
 
-
421
 
-sub tryone {
422
 
+sub tryone ($@) {
423
 
   my ($testip, @nets) = @_;
424
 
   my $nets = Mail::SpamAssassin::NetSet->new();
425
 
   foreach my $net (@nets) { $nets->add_cidr ($net); }
426
 
@@ -39,28 +39,85 @@
427
 
   }
428
 
 }
429
 
 
430
 
-ok (tryone ("127.0.0.1", "127.0.0.1"));
431
 
-ok (!tryone ("127.0.0.2", "127.0.0.1"));
432
 
+sub trynet ($@) {
433
 
+  my ($cidr, @nets) = @_;
434
 
+  my $net = Mail::SpamAssassin::NetSet->new();
435
 
+  $net->add_cidr ($cidr);
436
 
 
437
 
-ok (tryone ("127.0.0.1", "127."));
438
 
-ok (tryone ("127.0.0.254", "127."));
439
 
-ok (tryone ("127.0.0.1", "127/8"));
440
 
-ok (tryone ("127.0.0.1", "127.0/16"));
441
 
-ok (tryone ("127.0.0.1", "127.0.0/24"));
442
 
-ok (tryone ("127.0.0.1", "127.0.0.1/32"));
443
 
-ok (tryone ("127.0.0.1", "127.0.0.1/31"));
444
 
-ok (tryone ("127.0.0.1", "10.", "11.", "127.0.0.1"));
445
 
-ok (tryone ("127.0.0.1", "127.0."));
446
 
-ok (tryone ("127.0.0.1", "127.0.0."));
447
 
-ok (tryone ("127.0.0.1", "127."));
448
 
+  my $nets = Mail::SpamAssassin::NetSet->new();
449
 
+  foreach my $net (@nets) { $nets->add_cidr ($net); }
450
 
 
451
 
-ok (!tryone ("128.0.0.254", "127."));
452
 
-ok (!tryone ("128.0.0.1", "127/8"));
453
 
-ok (!tryone ("128.0.0.1", "127.0/16"));
454
 
-ok (!tryone ("128.0.0.1", "127.0.0/24"));
455
 
-ok (!tryone ("128.0.0.1", "127.0.0.1/32"));
456
 
-ok (!tryone ("128.0.0.1", "127.0.0.1/31"));
457
 
-ok (!tryone ("128.0.0.1", "127.0."));
458
 
-ok (!tryone ("128.0.0.1", "127.0.0."));
459
 
-ok (!tryone ("12.9.0.1", "10.", "11.", "127.0.0.1"));
460
 
+  if ($nets->contains_net ($net->{nets}->[0])) {
461
 
+    print "\n$cidr was in @nets\n"; return 1;
462
 
+  } else {
463
 
+    print "\n$cidr was not in @nets\n"; return 0;
464
 
+  }
465
 
+}
466
 
+
467
 
+ok tryone "127.0.0.1", "127.0.0.1";
468
 
+ok !tryone "127.0.0.2", "127.0.0.1";
469
 
+
470
 
+ok tryone "127.0.0.1", "127.";
471
 
+ok tryone "127.0.0.254", "127.";
472
 
+ok tryone "127.0.0.1", "127/8";
473
 
+ok tryone "127.0.0.1", "127.0/16";
474
 
+ok tryone "127.0.0.1", "127.0.0/24";
475
 
+ok tryone "127.0.0.1", "127.0.0.1/32";
476
 
+ok tryone "127.0.0.1", "127.0.0.1/31";
477
 
+ok tryone "127.0.0.1", "10.", "11.", "127.0.0.1";
478
 
+ok tryone "127.0.0.1", "127.0.";
479
 
+ok tryone "127.0.0.1", "127.0.0.";
480
 
+ok tryone "127.0.0.1", "127.";
481
 
+
482
 
+ok !tryone "128.0.0.254", "127.";
483
 
+ok !tryone "128.0.0.1", "127/8";
484
 
+ok !tryone "128.0.0.1", "127.0/16";
485
 
+ok !tryone "128.0.0.1", "127.0.0/24";
486
 
+ok !tryone "128.0.0.1", "127.0.0.1/32";
487
 
+ok !tryone "128.0.0.1", "127.0.0.1/31";
488
 
+ok !tryone "128.0.0.1", "127.0.";
489
 
+ok !tryone "128.0.0.1", "127.0.0.";
490
 
+ok !tryone "12.9.0.1", "10.", "11.", "127.0.0.1";
491
 
+
492
 
+ok !tryone "127.0.0.1", "::DEAD:BEEF";
493
 
+ok tryone "DEAD:BEEF:0000:0102:0304:0506:0708:0a0b",
494
 
+          "DEAD:BEEF:0000:0102:0304:0506::/96";
495
 
+ok tryone "DEAD:BEEF:0000:0102:0304:0506:0708:0a0b",
496
 
+          "DEAD:BEEF:0000:0102:0304:0506:0:0/96";
497
 
+ok tryone "fec0:02::0060:1dff:fff7:2109",
498
 
+          "fec0:02::0060:1dff:fff7:2109";
499
 
+ok tryone "::1", "::1";
500
 
+ok tryone "::1", "0:0:0:0:0:0:0:1";
501
 
+ok tryone "::1", "0:0:0::0:1";
502
 
+ok tryone "::1", "::/96";
503
 
+
504
 
+# various equivalences of ipv4 and ipv4-mapped-ipv6
505
 
+ok tryone "::ffff:127.0.0.1", "127/8";
506
 
+ok tryone "::ffff:127.0.0.1", "127.0.0.1";
507
 
+ok tryone "::ffff:127.0.0.1", "::ffff:127.0.0.1";
508
 
+ok tryone "127.0.0.1", "::ffff:127.0.0.1";
509
 
+ok tryone "127.0.0.1", "::ffff:7f00:0000/112";
510
 
+ok tryone "127.0.0.1", "::ffff:7f00:0001";
511
 
+ok tryone "127.0.0.1", "0000:0000:0000:0000:0000:ffff:127.0.0.0/112";
512
 
+ok tryone "127.0.0.1", "0000:0000:0000:0000:0000:ffff:127.0.0.1";
513
 
+
514
 
+ok !tryone "127.0.0.1", "::127.0.0.1";
515
 
+ok !tryone "::127.0.0.1", "127.0.0.1";
516
 
+ok !tryone "::127.0.0.1", "127/8";
517
 
+ok !tryone "127.0.0.1", "::7f00:0000/112";
518
 
+
519
 
+ok trynet "1.1/16", "1.1/16";
520
 
+ok trynet "1.1/16", "1.1/15";
521
 
+ok !trynet "1.1/16", "1.1/17";
522
 
+ok !trynet "1.1/16", "1.1.1/24";
523
 
+ok trynet "1.1.1/24", "1.1/16";
524
 
+
525
 
+ok trynet "DEAD:BEEF:0000:0102:0304:0506:0:0/96",
526
 
+          "DEAD:BEEF:0000:0102:0304:0506:0:0/96";
527
 
+ok trynet "DEAD:BEEF:0000:0102:0304:0506:0:0/96",
528
 
+          "DEAD:BEEF:0000:0102:0304:0506:0:0/95";
529
 
+ok trynet "DEAD:BEEF:0000:0102:0304:0506:0:0/96",
530
 
+          "DEAD:BEEF:0000:0102:0304:0506:1:1/90";
531
 
+ok !trynet "DEAD:BEEF:0000:0102:0304:0506:1:1/90",
532
 
+          "DEAD:BEEF:0000:0102:0304:0506:0:0/96";
533
 
 
534
 
diff -urNad spamassassin-3.2.5~/t/ip_addrs.t spamassassin-3.2.5/t/ip_addrs.t
535
 
--- spamassassin-3.2.5~/t/ip_addrs.t    2008-06-10 05:21:04.000000000 -0400
536
 
+++ spamassassin-3.2.5/t/ip_addrs.t     2009-08-09 15:42:28.000000000 -0400
537
 
@@ -26,9 +26,9 @@
538
 
     rules_filename => "$prefix/rules",
539
 
 });
540
 
 
541
 
-plan tests => 77;
542
 
+plan tests => 105;
543
 
 
544
 
-sub tryone {
545
 
+sub tryone ($$) {
546
 
   my ($pat, $testip) = @_;
547
 
 #warn "matching $testip gainst $pat\n";
548
 
   if ($testip =~ /^$pat$/) {
549
 
@@ -40,71 +40,104 @@
550
 
 
551
 
 use Mail::SpamAssassin::Constants qw(:all);
552
 
 
553
 
-sub tryipv4s {
554
 
+sub tryipv4s ($) {
555
 
   my $pat = shift;
556
 
-  ok (tryone ($pat, "127.0.0.1"));
557
 
-  ok (tryone ($pat, "255.255.255.255"));
558
 
-  ok (tryone ($pat, "1.0.0.1"));
559
 
-  ok (tryone ($pat, "0.0.0.1"));
560
 
-  ok (tryone ($pat, "255.5.4.128"));
561
 
-  ok (!tryone ($pat, "255.5.n.128"));
562
 
-  ok (!tryone ($pat, "-1.0.0.1"));
563
 
-  ok (!tryone ($pat, "256.0.0.1"));
564
 
-  ok (!tryone ($pat, "10.0.0.256"));
565
 
-  ok (!tryone ($pat, "10.0.0.999999"));
566
 
-  ok (!tryone ($pat, "255.5.-1.128"));
567
 
-  ok (!tryone ($pat, "255.5.-1.128."));
568
 
-  ok (!tryone ($pat, "100.1.2"));
569
 
-  ok (!tryone ($pat, "100.1"));
570
 
+  ok tryone $pat, "127.0.0.1";
571
 
+  ok tryone $pat, "255.255.255.255";
572
 
+  ok tryone $pat, "1.0.0.1";
573
 
+  ok tryone $pat, "0.0.0.1";
574
 
+  ok tryone $pat, "255.5.4.128";
575
 
+  ok !tryone $pat, "255.5.n.128";
576
 
+  ok !tryone $pat, "-1.0.0.1";
577
 
+  ok !tryone $pat, "256.0.0.1";
578
 
+  ok !tryone $pat, "10.0.0.256";
579
 
+  ok !tryone $pat, "10.0.0.999999";
580
 
+  ok !tryone $pat, "255.5.-1.128";
581
 
+  ok !tryone $pat, "255.5.-1.128.";
582
 
+  ok !tryone $pat, "100.1.2";
583
 
+  ok !tryone $pat, "100.1";
584
 
 }
585
 
 
586
 
-tryipv4s (Mail::SpamAssassin::Constants::IPV4_ADDRESS);
587
 
-tryipv4s (Mail::SpamAssassin::Constants::IP_ADDRESS);
588
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210"));
589
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "::ffff:64.142.3.173"));
590
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0::1"));
591
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "1080:0:0:0:8:800:200C:417A"));
592
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "1080::8:800:200C:417A"));
593
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "0:0:0:0:0:0:0:0"));
594
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "::"));
595
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:fff7:2109"));
596
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:ff1e:26ee"));
597
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:0100:f101:0210:a4ff:fee3:9566"));
598
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101:210:a4ff:fee3:9566"));
599
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101::1"));
600
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "::1"));
601
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "::192.168.0.1"));
602
 
-ok (!tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:"));
603
 
-ok (!tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:9348"));
604
 
-ok (!tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:fffff:100:f101:210:a4ff:fee3:9566"));
605
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:1"));
606
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:2"));
607
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:::1"));
608
 
-ok (tryone (Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e"));
609
 
+tryipv4s Mail::SpamAssassin::Constants::IPV4_ADDRESS;
610
 
+tryipv4s Mail::SpamAssassin::Constants::IP_ADDRESS;
611
 
 
612
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "localhost"));
613
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "localhost.localdomain"));
614
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "127.0.0.1"));
615
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "::ffff:127.0.0.1"));
616
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, ":::ffff:127.0.0.1"));
617
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:ffff:127.0.0.1"));
618
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:0000:0000:ffff:127.0.0.1"));
619
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "::1"));
620
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0:0:0:0:0:1"));
621
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, "3ffe:fffff:100:f101:210:a4ff:fee3:9566"));
622
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, "::192.168.0.1"));
623
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, "notlocalhost"));
624
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:::1"));
625
 
-ok (!tryone (Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e"));
626
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210";
627
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::ffff:64.142.3.173";
628
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0::1";
629
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "1080:0:0:0:8:800:200C:417A";
630
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "1080::8:800:200C:417A";
631
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "0:0:0:0:0:0:0:0";
632
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::";
633
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:fff7:2109";
634
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:ff1e:26ee";
635
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:0100:f101:0210:a4ff:fee3:9566";
636
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101:210:a4ff:fee3:9566";
637
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101::1";
638
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::1";
639
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::192.168.0.1";
640
 
+ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:";
641
 
+ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:9348";
642
 
+ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
643
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:1";
644
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:2";
645
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:::1";
646
 
+ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
647
 
 
648
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:0:0:1"));
649
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:1"));
650
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0::0:0:0:0:0:1"));
651
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0:0::0:0:0:0:1"));
652
 
-ok (tryone (Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0::0:0:1"));
653
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "localhost";
654
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "localhost.localdomain";
655
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "127.0.0.1";
656
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::ffff:127.0.0.1";
657
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, ":::ffff:127.0.0.1";
658
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:ffff:127.0.0.1";
659
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:0000:0000:ffff:127.0.0.1";
660
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::1";
661
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0:0:0:0:0:1";
662
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
663
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "::192.168.0.1";
664
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "notlocalhost";
665
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:::1";
666
 
+ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
667
 
 
668
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:0:0:1";
669
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:1";
670
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0::0:0:0:0:0:1";
671
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0::0:0:0:0:1";
672
 
+ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0::0:0:1";
673
 
 
674
 
-sub tsttrim {
675
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "127.0.0.1";
676
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::ffff:127.0.0.1";
677
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, ":::ffff:127.0.0.1";
678
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:ffff:127.0.0.1";
679
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:0000:0000:ffff:127.0.0.1";
680
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "192.168.12.3";
681
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::ffff:192.168.12.3";
682
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, ":::ffff:192.168.12.3";
683
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:ffff:192.168.12.3";
684
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:0000:0000:ffff:192.168.12.3";
685
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::1";
686
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0:0:0:0:0:0:1";
687
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
688
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::192.168.0.1";
689
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "notlocalhost";
690
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:::1";
691
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
692
 
+
693
 
+# fe80::/10 link-local
694
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:fe80:2500:310:3:20a:95ff:fef5:246e";
695
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:fe93:2500:310:3:20a:95ff:fef5:246e";
696
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fea9:2500:310:3:20a:95ff:fef5:246e";
697
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "feb0::310:3:20a:95ff:fef5:246e";
698
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fec0:2500:310:3:20a:95ff:fef5:246e";
699
 
+ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fe7f:2500:310:3:20a:95ff:fef5:246e";
700
 
+
701
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::0:0:0:0:0:0:1";
702
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::0:0:0:0:1";
703
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0::0:0:0:0:0:1";
704
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0::0:0:0:0:1";
705
 
+ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0:0::0:0:1";
706
 
+
707
 
+
708
 
+sub tsttrim ($$) {
709
 
   my $dom = shift;
710
 
   my $want = shift;
711
 
   my $got = Mail::SpamAssassin::Util::RegistrarBoundaries::trim_domain ($dom);
712
 
@@ -116,13 +149,13 @@
713
 
   }
714
 
 }
715
 
 
716
 
-ok (tsttrim ("foo.demon.co.uk", "foo.demon.co.uk"));
717
 
-ok (tsttrim ("bar.foo.demon.co.uk", "foo.demon.co.uk"));
718
 
-ok (tsttrim ("a.b.c.d.e.f.g.g.h.bar.foo.demon.co.uk", "foo.demon.co.uk"));
719
 
-ok (tsttrim ("de", "de"));
720
 
-ok (tsttrim ("jmason.org", "jmason.org"));
721
 
-ok (tsttrim ("localhost.jmason.org", "jmason.org"));
722
 
-ok (tsttrim ("localhost.jmason.edu.au", "jmason.edu.au"));
723
 
-ok (tsttrim ("localhost.jmason.hacked.au", "hacked.au"));
724
 
-ok (tsttrim ("localhost.jmason.edu.net", "edu.net"));
725
 
+ok tsttrim "foo.demon.co.uk", "foo.demon.co.uk";
726
 
+ok tsttrim "bar.foo.demon.co.uk", "foo.demon.co.uk";
727
 
+ok tsttrim "a.b.c.d.e.f.g.g.h.bar.foo.demon.co.uk", "foo.demon.co.uk";
728
 
+ok tsttrim "de", "de";
729
 
+ok tsttrim "jmason.org", "jmason.org";
730
 
+ok tsttrim "localhost.jmason.org", "jmason.org";
731
 
+ok tsttrim "localhost.jmason.edu.au", "jmason.edu.au";
732
 
+ok tsttrim "localhost.jmason.hacked.au", "hacked.au";
733
 
+ok tsttrim "localhost.jmason.edu.net", "edu.net";
734
 
 
735
 
diff -urNad spamassassin-3.2.5~/t/rcvd_parser.t spamassassin-3.2.5/t/rcvd_parser.t
736
 
--- spamassassin-3.2.5~/t/rcvd_parser.t 2008-06-10 05:21:04.000000000 -0400
737
 
+++ spamassassin-3.2.5/t/rcvd_parser.t  2009-08-09 15:42:28.000000000 -0400
738
 
@@ -18,7 +18,7 @@
739
 
 
740
 
 use lib '.'; use lib 't';
741
 
 use SATest; sa_t_init("rcvd_parser");
742
 
-use Test; BEGIN { plan tests => 130 };
743
 
+use Test; BEGIN { plan tests => 131 };
744
 
 use strict;
745
 
 
746
 
 # format is:
747
 
@@ -54,7 +54,7 @@
748
 
   '',
749
 
 
750
 
   'from rc3.isc.org (rc3.isc.org [IPv6:2001:4f8:3:bb::25])       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))        (No client certificate requested)  by sf1.isc.org (Postfix) with ESMTP id C986F284EE       for <jm@jmason.org>; Sat, 16 Oct 2004 21:30:02 +0000 (UTC) (envelope-from bind-users-bounce@isc.org)' =>
751
 
-  '',
752
 
+  '[ ip=2001:4f8:3:bb::25 rdns=rc3.isc.org helo=rc3.isc.org by=sf1.isc.org ident= envfrom=bind-users-bounce@isc.org id=C986F284EE auth= msa=0 ]',
753
 
 
754
 
   'from ausisaps301-dmz.aus.amer.dell.com ([143.166.226.16]) (SquirrelMail authenticated user hoolis); by www.penguintowne.org with HTTP; Mon, 22 Mar 2004 12:54:13 -0600 (CST)' =>
755
 
   '',
756
 
@@ -418,6 +418,9 @@
757
 
 
758
 
   'from [86.122.158.69] by mta2.iomartmail.com; Thu, 2 Aug 2007 21:50:04 -0200' =>
759
 
   '[ ip=86.122.158.69 rdns= helo=!86.122.158.69! by=mta2.iomartmail.com ident= envfrom= id= auth= msa=0 ]',
760
 
+    # bug 5512
761
 
+    'from ([89.79.20.16]) by pop3.m80.net with MailEnable ESMTP; Tue, 20 Feb 2007 09:26:17 -0500' =>
762
 
+    '[ ip=89.79.20.16 rdns= helo= by=pop3.m80.net ident= envfrom= id= auth= msa=0 ]'
763
 
 
764
 
 );
765
 
 
766
 
diff -urNad spamassassin-3.2.5~/t/trust_path.t spamassassin-3.2.5/t/trust_path.t
767
 
--- spamassassin-3.2.5~/t/trust_path.t  2008-06-10 05:21:04.000000000 -0400
768
 
+++ spamassassin-3.2.5/t/trust_path.t   2009-08-09 15:42:28.000000000 -0400
769
 
@@ -18,7 +18,7 @@
770
 
 
771
 
 use lib '.'; use lib 't';
772
 
 use SATest; sa_t_init("trust_path");
773
 
-use Test; BEGIN { plan tests => 81 };
774
 
+use Test; BEGIN { plan tests => 96 };
775
 
 use IO::File;
776
 
 
777
 
 use strict;
778
 
@@ -512,6 +512,83 @@
779
 
 },
780
 
 
781
 
 # ---------------------------------------------------------------------------
782
 
+# IPv6
783
 
+
784
 
+q{
785
 
+
786
 
+  trusted_networks DEAD:BEEF:0000:0102:0304:0506:0708:0a0b
787
 
+  Received: from sender.net (sender.net [DEAD:BEEF:0000:0102:0304:0506:0708:0a0b])
788
 
+        by receiver.net (Postfix) with ESMTP id A96E18BD97
789
 
+
790
 
+} => q{
791
 
+
792
 
+Trusted: [ ip=DEAD:BEEF:0000:0102:0304:0506:0708:0a0b rdns=sender.net helo=sender.net by=receiver.net ident= envfrom= intl=1 id=A96E18BD97 auth= msa=0 ]
793
 
+Untrusted:
794
 
+
795
 
+},
796
 
+
797
 
+# ---------------------------------------------------------------------------
798
 
+# bug 4503
799
 
+
800
 
+q{
801
 
+
802
 
+  trusted_networks DEAD:BEEF:0000:0102:0304:0506:0708:0a0b
803
 
+  Received: from sender.net (sender.net [IPv6:2002:abcd:ef10::1])
804
 
+        by receiver.net (Postfix) with ESMTP id A96E18BD97
805
 
+
806
 
+} => q{
807
 
+
808
 
+Trusted: 
809
 
+Untrusted: [ ip=2002:abcd:ef10::1 rdns=sender.net helo=sender.net by=receiver.net ident= envfrom= intl=0 id=A96E18BD97 auth= msa=0 ]
810
 
+
811
 
+},
812
 
+
813
 
+# ---------------------------------------------------------------------------
814
 
+
815
 
+# ::1 implicitly trusted as default
816
 
+q{
817
 
+
818
 
+  Received: from sender.net (::1) by receiver.net
819
 
+              with SMTP; 10 Nov 2005 00:00:00 -0000
820
 
+
821
 
+} => q{
822
 
+
823
 
+Trusted: [ ip=::1 rdns=sender.net helo=sender.net by=receiver.net ident= envfrom= intl=1 id= auth= msa=0 ]
824
 
+Untrusted: 
825
 
+
826
 
+},
827
 
+
828
 
+# ---------------------------------------------------------------------------
829
 
+
830
 
+q{
831
 
+
832
 
+  trusted_networks DEAD:BEEF:0000:0102:0304:0506:0708:0000/108
833
 
+  Received: from sender.net (sender.net [DEAD:BEEF:0000:0102:0304:0506:0708:0a0b])
834
 
+        by receiver.net (Postfix) with ESMTP id A96E18BD97
835
 
+
836
 
+} => q{
837
 
+
838
 
+Trusted: [ ip=DEAD:BEEF:0000:0102:0304:0506:0708:0a0b rdns=sender.net helo=sender.net by=receiver.net ident= envfrom= intl=1 id=A96E18BD97 auth= msa=0 ]
839
 
+Untrusted:
840
 
+
841
 
+},
842
 
+
843
 
+# ---------------------------------------------------------------------------
844
 
+
845
 
+q{
846
 
+
847
 
+  trusted_networks DEAD:BEEF:0000:0102:0304:0506:0708:0a0c
848
 
+  Received: from sender.net (sender.net [DEAD:BEEF:0000:0102:0304:0506:0708:0a0b])
849
 
+        by receiver.net (Postfix) with ESMTP id A96E18BD97
850
 
+
851
 
+} => q{
852
 
+
853
 
+Trusted:
854
 
+Untrusted: [ ip=DEAD:BEEF:0000:0102:0304:0506:0708:0a0b rdns=sender.net helo=sender.net by=receiver.net ident= envfrom= intl=0 id=A96E18BD97 auth= msa=0 ]
855
 
+
856
 
+},
857
 
+
858
 
+# ---------------------------------------------------------------------------
859
 
 
860
 
 );
861
 
 
862
 
@@ -552,7 +629,10 @@
863
 
     print "[netset warning expected here...]\n";
864
 
   }
865
 
 
866
 
-  my $sa = create_saobj({ userprefs_filename => "log/tst.cf" });
867
 
+  my $sa = create_saobj({
868
 
+              userprefs_filename => "log/tst.cf",
869
 
+              # debug => 1
870
 
+            });
871
 
   ok($sa);
872
 
 
873
 
   $sa->{lint_callback} = sub {