ipaddresses : invalid netmask2cidr mask was not correctely detected

git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@5988 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
2020-05-11 20:06:30 +00:00
parent 068b1e3ec3
commit 4a478ae9f1
2 changed files with 14 additions and 5 deletions

View File

@@ -355,13 +355,13 @@ class ipaddressesTest extends PHPUnit_Framework_TestCase
{ {
$i = new ipaddresses (); $i = new ipaddresses ();
$res = $i->netmask2cidr ("127.0.0.0"); $res = $i->netmask2cidr ("127.0.0.0");
$this->assertSame (7, $res); $this->assertSame (false, $res);
} }
public function test_netmask2cidr7 () public function test_netmask2cidr7 ()
{ {
$i = new ipaddresses (); $i = new ipaddresses ();
$res = $i->netmask2cidr ("63.0.0.0"); $res = $i->netmask2cidr ("63.0.0.0");
$this->assertSame (6, $res); $this->assertSame (false, $res);
} }
public function test_netmask2cidr8 () public function test_netmask2cidr8 ()
{ {
@@ -369,6 +369,12 @@ class ipaddressesTest extends PHPUnit_Framework_TestCase
$res = $i->netmask2cidr ("155.0.0.0"); $res = $i->netmask2cidr ("155.0.0.0");
$this->assertSame (false, $res); $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 () public function test_netmask2cidrWildcard_1 ()
{ {

View File

@@ -494,14 +494,14 @@ class ipaddresses
if ($netmask === FALSE) if ($netmask === FALSE)
throw new \Exception (dgettext ("domframework", "Invalid netmask"), 500); throw new \Exception (dgettext ("domframework", "Invalid netmask"), 500);
$netmask = decbin ($netmask); $netmask = decbin ($netmask);
$netmask = sprintf ("%032s", $netmask);
$res = -1; $res = -1;
for ($i = 0 ; $i < 32 ; $i++) 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; $res = $i;
} }
@@ -509,6 +509,9 @@ class ipaddresses
{ {
return false; return false;
} }
else
{
}
} }
if ($res === -1 && $i === 32) if ($res === -1 && $i === 32)
return 32; return 32;