diff -Nur e-smith-base-5.8.0.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/localnetworks.pm e-smith-base-5.8.0/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/localnetworks.pm --- e-smith-base-5.8.0.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/localnetworks.pm 2006-03-14 11:20:43.000000000 -0500 +++ e-smith-base-5.8.0/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/localnetworks.pm 2020-06-27 22:39:20.952000000 -0400 @@ -18,6 +18,7 @@ use Exporter; use Carp; use Net::IPv4Addr; +use Net::Netmask; our @ISA = qw(esmith::FormMagick Exporter); @@ -287,14 +288,14 @@ sub subnet_mask { my ( $fm, $data ) = @_; - if ( CGI::FormMagick::Validator::ip_number( $fm, $data ) eq "OK" ) + # we test for a valid mask or bit mask + my $tip="192.168.50.1"; + my $block = new Net::Netmask("$tip/$data") or return "INVALID_SUBNET_MASK"; + if ($block->mask() eq "$data" || $block->bits() eq "$data") { return "OK"; } - else - { - return "INVALID_SUBNET_MASK"; - } + return "INVALID_SUBNET_MASK"; } =head1 ADDING AND REMOVING NETWORKS @@ -308,6 +309,10 @@ my ($fm) = @_; my $networkAddress = $fm->{cgi}->param('networkAddress'); my $networkMask = $fm->{cgi}->param('networkMask'); + # we transform bit mask to regular mask + my $block = new Net::Netmask("$networkAddress/$networkMask"); + $networkMask = $block->mask(); + my $networkRouter = $fm->{cgi}->param('networkRouter'); my $network_db = esmith::NetworksDB->open() diff -Nur e-smith-base-5.8.0.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/remoteaccess.pm e-smith-base-5.8.0/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/remoteaccess.pm --- e-smith-base-5.8.0.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/remoteaccess.pm 2016-02-04 18:14:13.000000000 -0500 +++ e-smith-base-5.8.0/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/remoteaccess.pm 2020-06-27 22:39:20.948000000 -0400 @@ -32,6 +32,7 @@ use Exporter; use Carp; use Socket qw( inet_aton ); +use Net::Netmask; our @ISA = qw(esmith::FormMagick Exporter); @@ -450,8 +451,15 @@ sub subnet_mask_or_blank { my ($self, $mask) = @_; - - if ($self->ip_number_or_blank($mask) eq 'OK') + if (!defined($mask) || $mask eq "") + { + return "OK"; + } + chomp $mask ; + # we test for a valid mask or bit mask + my $tip="192.168.50.1"; + my $block = new Net::Netmask("$tip/$mask") or return "INVALID_SUBNET_MASK"; + if ($block->mask() eq "$mask" || $block->bits() eq "$mask") { return "OK"; } @@ -479,6 +487,10 @@ my $net = $q->param('validFromNetwork'); my $mask = $q->param('validFromMask'); + # we transform bit mask to regular mask + my $block = new Net::Netmask("$net/$mask"); + $mask = $block->mask(); + # do nothing if no network was added return 1 unless ($net && $mask);