in function network_equal and network2bin a check for undefined variables were missing. added them. --- config/cfgroot/network-functions.pl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 93b8190..9e50d7c 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -108,10 +108,14 @@ sub network_equal { my $network1 = shift; my $network2 = shift;
- my $bin1 = &network2bin($network1); - my $bin2 = &network2bin($network2); + my @bin1 = &network2bin($network1); + my @bin2 = &network2bin($network2);
- if ($bin1 eq $bin2) { + if(!defined $bin1 || !defined $bin2){ + return undef; + } + + if ($bin1[0] eq $bin2[0] && $bin1[1] eq $bin2[1]){ return 1; }
@@ -132,6 +136,10 @@ sub network2bin($) {
my $address_bin = &ip2bin($address); my $netmask_bin = &ip2bin($netmask); + + if (!defined $address_bin || !defined $netmask_bin){ + return undef; + }
my $network_start = $address_bin & $netmask_bin;
@@ -457,7 +465,7 @@ sub testsuite() { assert(!$result);
$result = &network_equal("192.168.0.1/24", "192.168.0.XXX/24"); - assert($result); + assert(!$result);
$result = &ip_address_in_network("10.0.1.4", "10.0.0.0/8"); assert($result);