Correct IPv6 address checking (again)

Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
Tom Eastep 2013-02-15 14:26:08 -08:00
parent 36db41457d
commit ab5a11e91b
2 changed files with 17 additions and 7 deletions

View File

@ -6331,7 +6331,7 @@ sub isolate_source_interface( $ ) {
} else {
$source =~ tr/<>/[]/;
if ( $source =~ /^(.+?):(\[(?:.+)\],\[(?:.+)\])$/ ) {
if ( $source =~ /^(.+?):(\[(?:.+),\[(?:.+)\])$/ ) {
$iiface = $1;
$inets = $2;
} elsif ( $source =~ /^(.+?):\[(.+)\]\s*$/ ||
@ -6342,7 +6342,7 @@ sub isolate_source_interface( $ ) {
$iiface = $1;
$inets = $2;
} elsif ( $source =~ /:/ ) {
if ( $source =~ /^\[(?:.+)\],\[(?:.+)\]$/ ){
if ( $source =~ /^\[(?:.+),\[(?:.+)\]$/ ){
$inets = $source;
} elsif ( $source =~ /^\[(.+)\]$/ ) {
$inets = $1;
@ -6449,7 +6449,7 @@ sub isolate_dest_interface( $$$$ ) {
} else {
$dest =~ tr/<>/[]/;
if ( $dest =~ /^(.+?):(\[(?:.+)\],\[(?:.+)\])$/ ) {
if ( $dest =~ /^(.+?):(\[(?:.+),\[(?:.+)\])$/ ) {
$diface = $1;
$dnets = $2;
} elsif ( $dest =~ /^(.+?):\[(.+)\]\s*$/ ||
@ -6460,7 +6460,7 @@ sub isolate_dest_interface( $$$$ ) {
$diface = $1;
$dnets = $2;
} elsif ( $dest =~ /:/ ) {
if ( $dest =~ /^\[(?:.+)\],\[(?:.+)\]$/ ){
if ( $dest =~ /^\[(?:.+),\[(?:.+)\]$/ ){
$dnets = $dest;
} elsif ( $dest =~ /^\[(.+)\]$/ ) {
$dnets = $1;

View File

@ -646,8 +646,19 @@ sub resolve_6dnsname( $ ) {
}
sub validate_6net( $$ ) {
my ($net, $vlsm, $rest) = split( '/', $_[0], 3 );
my $allow_name = $_[0];
my ( $net, $allow_name ) = @_;
if ( $net =~ /^\[(.+)]$/ ) {
$net = $1;
} elsif ( $net =~ /^\[(.+)\]\/(\d+)$/ ) {
$net = join( '/', $1, $2 );
}
fatal_error "Invalid Network Address($net)" if $net =~ /\[/;
($net, my $vlsm, my $rest) = split( '/', $net, 3 );
fatal_error 'Invalid Network Address(' . join( '/', $net, $vlsm, $rest ) if defined $rest;
if ( $net =~ /\+(\[?)/ ) {
if ( $1 ) {
@ -661,7 +672,6 @@ sub validate_6net( $$ ) {
fatal_error "Invalid Network address ($_[0])" unless supplied $net;
$net = $1 if $net =~ /^\[(.*)\]$/;
if ( defined $vlsm ) {
fatal_error "Invalid VLSM ($vlsm)" unless $vlsm =~ /^\d+$/ && $vlsm <= 128;