Subversion Repositories

?revision_form?Rev ?revision_input??revision_submit??revision_endform?

Rev 70 | Blame | Compare with Previous | Last modification | View Log | RSS feed

Description: Bail out if a non-IPv4 address is encountered
Author: Magnus Holmgren <holmgren@debian.org>
Bug-Debian: http://bugs.debian.org/300103
Bug-Debian: http://bugs.debian.org/479955

--- sa-exim-4.2.1.orig/Greylisting.pm
+++ sa-exim-4.2.1/Greylisting.pm
@@ -170,16 +172,19 @@ sub greylisting
           
            # connectip is supposed to be untainted now, but I was still getting
            # some insecure dependecy error messages sometimes (perl 5.8 problem apparently)
-           $connectip =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
-           my ($ipbyte1, $ipbyte2, $ipbyte3, $ipbyte4) = ($1, $2, $3, $4);
-           my $ipdir1 = "$option{'dir'}/$ipbyte1";
-           my $ipdir2 = "$ipdir1/$ipbyte2";
-           my $ipdir3 = "$ipdir2/$ipbyte3";
+           unless ($connectip =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/) {
+               warn "Can only handle IPv4 addresses; skipping greylisting call for message $mesgid\n";
+               return 0;
+           }
+
+           my $ipdir1 = "$option{'dir'}/$1";
+           my $ipdir2 = "$ipdir1/$2";
+           my $ipdir3 = "$ipdir2/$3";
            my $ipdir4;
            my $tupletdir;
 
            $ipdir4 = "$ipdir3";
-           $ipdir4 .= "/$ipbyte4" if ($option{'greylistfourthbyte'});
+           $ipdir4 .= "/$4" if ($option{'greylistfourthbyte'});
            $tupletdir = "$ipdir4/$envfrom";
 
            $tuplet = "$tupletdir/$rcptto";