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");  |