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