diff options
author | jim-p <jimp@pfsense.org> | 2016-11-29 10:53:19 -0500 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2016-11-29 10:53:19 -0500 |
commit | 7a9c12b3d6e01e11ec0af3a6690a5c3de2fbbd2e (patch) | |
tree | 36a35bebb42b991fa66cba405110ccc40ba46e26 /src/etc/inc/interfaces.inc | |
parent | 481db4fe0459b8e4337ad2ffcf91963f74325105 (diff) | |
download | pfsense-7a9c12b3d6e01e11ec0af3a6690a5c3de2fbbd2e.zip pfsense-7a9c12b3d6e01e11ec0af3a6690a5c3de2fbbd2e.tar.gz |
Improve input validation on static ARP for DHCP static mapping entries, also prevent the backend from attempting to apply entries with insufficient information stored. Fixes #6969
Diffstat (limited to 'src/etc/inc/interfaces.inc')
-rw-r--r-- | src/etc/inc/interfaces.inc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index c1d3fdb..b1ef885 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -5927,7 +5927,9 @@ function interfaces_staticarp_configure($if) { mwexec("/usr/sbin/arp -d -i " . escapeshellarg($ifcfg['if']) . " -a > /dev/null 2>&1 "); if (is_array($config['dhcpd'][$if]['staticmap'])) { foreach ($config['dhcpd'][$if]['staticmap'] as $arpent) { - mwexec("/usr/sbin/arp -s " . escapeshellarg($arpent['ipaddr']) . " " . escapeshellarg($arpent['mac'])); + if (!empty($arpent['ipaddr']) && !empty($arpent['mac'])) { + mwexec("/usr/sbin/arp -s " . escapeshellarg($arpent['ipaddr']) . " " . escapeshellarg($arpent['mac'])); + } } } } else { @@ -5935,7 +5937,7 @@ function interfaces_staticarp_configure($if) { mwexec("/usr/sbin/arp -d -i " . escapeshellarg($ifcfg['if']) . " -a > /dev/null 2>&1 "); if (is_array($config['dhcpd'][$if]) && is_array($config['dhcpd'][$if]['staticmap'])) { foreach ($config['dhcpd'][$if]['staticmap'] as $arpent) { - if (isset($arpent['arp_table_static_entry'])) { + if (isset($arpent['arp_table_static_entry']) && !empty($arpent['ipaddr']) && !empty($arpent['mac'])) { mwexec("/usr/sbin/arp -s " . escapeshellarg($arpent['ipaddr']) . " " . escapeshellarg($arpent['mac'])); } } |