IPv6 network size is a number of bits, and so must only be divisble by 8

This commit is contained in:
Jamie Cameron
2017-12-08 23:29:37 -08:00
parent 12e8c0c362
commit aa26b75677
3 changed files with 5 additions and 5 deletions

View File

@@ -2849,7 +2849,7 @@ for($i=2; $i<@_; $i++) {
# Compare with an IPv6 network
local $v6size = $2;
local $v6addr = &canonicalize_ip6($1);
local $bytes = $v6size / 16;
local $bytes = $v6size / 8;
@mo = split(/:/, $v6addr);
local @io6 = split(/:/, &canonicalize_ip6($_[0]));
for($j=0; $j<$bytes; $j++) {

View File

@@ -29,7 +29,7 @@ access_ecidr='$1' is not a valid CIDR number
access_eip='$1' is not a complete IP or network address
access_eip6='$1' is not a complete IPv6 or network address
access_ecidr6='$1' is not a valid IPv6 network size
access_ecidr16=IPv6 network size '$1' must be divisible by 16
access_ecidr8=IPv6 network size '$1' must be divisible by 8
access_ehost=Failed to find IP address for '$1'
access_eself=Your current IP address ($1) would be denied
access_always=Resolve hostnames on every request?

View File

@@ -1542,7 +1542,7 @@ for(my $i=1; $i<@_; $i++) {
# Compare with an IPv6 network
my $v6size = $2;
my $v6addr = &canonicalize_ip6($1);
my $bytes = $v6size / 16;
my $bytes = $v6size / 8;
my @mo = split(/:/, $v6addr);
my @io = split(/:/, &canonicalize_ip6($_[0]));
for(my $j=0; $j<$bytes; $j++) {
@@ -1614,8 +1614,8 @@ elsif ($h =~ /^([a-f0-9:]+)\/(\d+)$/) {
return &text('access_eip6', $1);
$2 >= 0 && $2 <= 128 ||
return &text('access_ecidr6', "$2");
$2 % 16 == 0 ||
return &text('access_ecidr16', "$2");
$2 % 8 == 0 ||
return &text('access_ecidr8', "$2");
}
elsif ($h =~ /^[a-f0-9:]+$/) {
# IPv6 address