diff --git a/Tests/ipaddressesTest.php b/Tests/ipaddressesTest.php index 1603092..d72fded 100644 --- a/Tests/ipaddressesTest.php +++ b/Tests/ipaddressesTest.php @@ -355,13 +355,13 @@ class ipaddressesTest extends PHPUnit_Framework_TestCase { $i = new ipaddresses (); $res = $i->netmask2cidr ("127.0.0.0"); - $this->assertSame (7, $res); + $this->assertSame (false, $res); } public function test_netmask2cidr7 () { $i = new ipaddresses (); $res = $i->netmask2cidr ("63.0.0.0"); - $this->assertSame (6, $res); + $this->assertSame (false, $res); } public function test_netmask2cidr8 () { @@ -369,6 +369,12 @@ class ipaddressesTest extends PHPUnit_Framework_TestCase $res = $i->netmask2cidr ("155.0.0.0"); $this->assertSame (false, $res); } + public function test_netmask2cidr9 () + { + $i = new ipaddresses (); + $res = $i->netmask2cidr ("0.0.0.255"); + $this->assertSame (false, $res); + } public function test_netmask2cidrWildcard_1 () { diff --git a/ipaddresses.php b/ipaddresses.php index 5456fa0..c6ca209 100644 --- a/ipaddresses.php +++ b/ipaddresses.php @@ -494,14 +494,14 @@ class ipaddresses if ($netmask === FALSE) throw new \Exception (dgettext ("domframework", "Invalid netmask"), 500); $netmask = decbin ($netmask); + $netmask = sprintf ("%032s", $netmask); $res = -1; for ($i = 0 ; $i < 32 ; $i++) { - if (! isset ($netmask[$i])) + if ($res === -1 && $netmask[$i] === $maskdirect) { - break; } - elseif ($res == -1 && $netmask[$i] === $maskrevert) + elseif ($res === -1 && $netmask[$i] === $maskrevert) { $res = $i; } @@ -509,6 +509,9 @@ class ipaddresses { return false; } + else + { + } } if ($res === -1 && $i === 32) return 32;