diff options
-rw-r--r-- | it.class | 2 | ||||
-rwxr-xr-x | tests/it.t | 2 |
2 files changed, 3 insertions, 1 deletions
@@ -325,7 +325,7 @@ function cidr_match($ip, $cidr) list($subnet, $mask) = explode('/', $cidr); $ip_bin = inet_pton($ip); $subnet_bin = inet_pton($subnet); - $valid_bytes = $mask >> 3; + $valid_bytes = $mask ? $mask >> 3 : 42; $bitmask = 256 - (1 << (8 - ($mask & 7))); $lastbyte_matched = $bitmask ? (ord($ip_bin{$valid_bytes}) & $bitmask) == (ord($subnet_bin{$valid_bytes}) & $bitmask) : true; return substr($ip_bin, 0, $valid_bytes) == substr($subnet_bin, 0, $valid_bytes) && $lastbyte_matched; @@ -316,6 +316,8 @@ setlocale(LC_CTYPE, $oldlocale); ini_set('default_charset', $oldcharset); # end of tests that must run with specific charset # it::cidr_match tests +is(it::cidr_match('192.168.2.3', '192.168.2.5'), false, "cidr_match full IP no match no mask"); +is(it::cidr_match('192.168.2.3', '192.168.2.3'), true, "cidr_match full IP match no mask"); is(it::cidr_match('192.168.2.3', '192.168.2.5/32'), false, "cidr_match full IP no match"); is(it::cidr_match('192.168.2.5', '192.168.2.5/32'), true, "cidr_match full IP match"); is(it::cidr_match('192.168.1.1', '192.168.42.0/24'), false, "cidr_match no match"); |