diff options
author | Renato Botelho <garga@FreeBSD.org> | 2013-12-04 18:20:58 -0200 |
---|---|---|
committer | Renato Botelho <garga@FreeBSD.org> | 2013-12-04 18:21:30 -0200 |
commit | 21d74c8e79948cd05c11f0ab79a463aea4bff2ce (patch) | |
tree | 69de2ba5388c0bd1b3d8aa8eaa264561e9853a9b /etc/rc.initial.setlanip | |
parent | f70a140fe18cb80012e53f82c268788fbcae5436 (diff) | |
download | pfsense-21d74c8e79948cd05c11f0ab79a463aea4bff2ce.zip pfsense-21d74c8e79948cd05c11f0ab79a463aea4bff2ce.tar.gz |
Prevent network or broadcast address to be set on interface (console, GUI and wizard). It should fix #3196
Diffstat (limited to 'etc/rc.initial.setlanip')
-rwxr-xr-x | etc/rc.initial.setlanip | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/etc/rc.initial.setlanip b/etc/rc.initial.setlanip index 14213b5..8273073 100755 --- a/etc/rc.initial.setlanip +++ b/etc/rc.initial.setlanip @@ -283,8 +283,19 @@ function console_configure_ip_address($version) { echo "\n" . sprintf(gettext("Enter the new %s %s subnet bit count:"), $upperifname, $label_IPvX) . "\n> "; $intbits = chop(fgets($fp)); + $intbits_ok = is_numeric($intbits) && (($intbits >= 1) || ($intbits <= $maxbits)); $restart_dhcpd = true; - } while (!is_numeric($intbits) || ($intbits < 1) || ($intbits > $maxbits)); + + if ($version === 4 && $intbits < $maxbits) { + if ($intip == gen_subnet($intip, $intbits)) { + echo gettext("You cannot set network address to an interface"); + $intbits_ok = false; + } else if ($intip == gen_subnet_max($intip, $intbits)) { + echo gettext("You cannot set broadcast address to an interface"); + $intbits_ok = false; + } + } + } while (!$intbits_ok); if ($version === 6) { $subnet = gen_subnetv6($intip, $intbits); |