diff options
Diffstat (limited to 'etc/inc')
-rw-r--r-- | etc/inc/filter.inc | 2 | ||||
-rw-r--r-- | etc/inc/util.inc | 18 |
2 files changed, 11 insertions, 9 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index f31806a..3e05678 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -420,7 +420,7 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr if(!isset($aliasnesting[$address])) $tmpline = filter_generate_nested_alias($address, $aliastable[$address], $aliasnesting, $aliasaddrnesting); } else if(!isset($aliasaddrnesting[$address])) { - if(!is_ipaddr($address) && !is_subnet($address)) { + if(!is_ipaddr($address) && !is_subnet($address) && !is_port($address)) { $filterdns .= "{$address} = {$name}\n"; continue; } diff --git a/etc/inc/util.inc b/etc/inc/util.inc index 169fb7d..498f14a 100644 --- a/etc/inc/util.inc +++ b/etc/inc/util.inc @@ -300,14 +300,16 @@ function is_validaliasname($name) { /* returns true if $port is a valid TCP/UDP port */ function is_port($port) { - if (getservbyname($port, "tcp") || getservbyname($port, "udp")) - return true; - if (!ctype_digit($port)) - return false; - if ((intval($port) < 1) || (intval($port) > 65535)) - return false; - else - return true; + $tmpports = explode(":", $port); + foreach($tmpports as $tmpport) { + if (getservbyname($tmpport, "tcp") || getservbyname($tmpport, "udp")) + continue; + if (!ctype_digit($tmpport)) + return false; + else if ((intval($port) < 1) || (intval($port) > 65535)) + return false; + } + return true; } /* returns true if $portrange is a valid TCP/UDP portrange ("<port>:<port>") */ |