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 ();
$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 ()
{

View File

@@ -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;