diff options
author | Ermal <eri@pfsense.org> | 2011-07-27 17:43:59 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2011-07-27 17:43:59 +0000 |
commit | 3ab1b036b81de890209a81953a1f5ec917ffeda9 (patch) | |
tree | 53f79fde746394d9f63f04b88f18e147ec6bc89c /etc | |
parent | 2c466077934c3812aed9d15b77ab515e4b3e116d (diff) | |
download | pfsense-3ab1b036b81de890209a81953a1f5ec917ffeda9.zip pfsense-3ab1b036b81de890209a81953a1f5ec917ffeda9.tar.gz |
Prevent php from coring if the wrong parameters are passed to ip2long
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/filter.inc | 13 | ||||
-rw-r--r-- | etc/inc/vpn.inc | 5 |
2 files changed, 16 insertions, 2 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index c67a2cd..90a0ade 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -1368,7 +1368,10 @@ function filter_nat_rules_generate() { } /* PPTP subnet */ if(($config['pptpd']['mode'] == "server" ) && is_private_ip($config['pptpd']['remoteip'])) { - $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip'])+($config['pptpd']['n_pptp_units']-1))); + if (isset($config['pptpd']['n_pptp_units']) && is_numeric($config['pptpd']['n_pptp_units'])) + $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip'])+($config['pptpd']['n_pptp_units']-1))); + else + $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip']))); $numberofnathosts += count($pptp_subnets); $tonathosts .= implode(" ", $pptp_subnets) . " "; } @@ -1683,7 +1686,13 @@ function filter_generate_address(& $rule, $target = "source", $isnat = false) { $src = "{$lansa}/{$lansn}"; break; case 'pptp': - $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip'])+($config['pptpd']['n_pptp_units']-1))); + if (isset($config['pptpd']['n_pptp_units']) && is_numeric($config['pptpd']['n_pptp_units'])) + $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip'])+($config['pptpd']['n_pptp_units']-1))); + else + $pptp_subnets = ip_range_to_subnet_array($config['pptpd']['remoteip'], long2ip32(ip2long($config['pptpd']['remoteip']))); + if (empty($pptp_subnets)) + return ""; + $src = "{ " . implode(" ", $pptp_subnets) . " }"; break; case 'pppoe': diff --git a/etc/inc/vpn.inc b/etc/inc/vpn.inc index b731fd0..311ae9e 100644 --- a/etc/inc/vpn.inc +++ b/etc/inc/vpn.inc @@ -1006,6 +1006,11 @@ function vpn_pptpd_configure() { unlink_if_exists("{$g['varetc_path']}/pptp-vpn/mpd.secret"); } + if (empty($pptpdcfg['n_pptp_units'])) { + log_error("Something wrong in the PPTPd configuration. Preventing starting the daemon because issues would arise."); + return; + } + /* make sure pptp-vpn directory exists */ if (!file_exists("{$g['varetc_path']}/pptp-vpn")) mkdir("{$g['varetc_path']}/pptp-vpn"); |