diff options
author | Ermal <eri@pfsense.org> | 2011-07-06 18:50:55 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2011-07-06 18:59:24 +0000 |
commit | 3a26fb7f03a0336ed8dd642c46c6e513fca794da (patch) | |
tree | a225ddee7362b84564308e1f03132f04e091e2b1 /etc/inc/filter.inc | |
parent | b4a7f7f230f55baa18a8eca7a0100db84ccd2171 (diff) | |
download | pfsense-3a26fb7f03a0336ed8dd642c46c6e513fca794da.zip pfsense-3a26fb7f03a0336ed8dd642c46c6e513fca794da.tar.gz |
Feature #1603. Correct nested urltable alias code to be more fullproof to errors and does not break the ruleset on large lists of urltables. Though this needs a revisit to work properly since it breaks urltable alias property of reloading contents.
Diffstat (limited to 'etc/inc/filter.inc')
-rw-r--r-- | etc/inc/filter.inc | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index 646aea6..dc6b95f 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -452,21 +452,13 @@ function filter_generate_scrubing() { return $scrubrules; } -function get_alias_type($name) { - global $config; - - foreach ($config['aliases']['alias'] as $alias) - if ($name == $alias['name']) - return $alias['type']; - return ""; -} - function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddrnesting) { global $aliastable, $filterdns; $addresses = split(" ", $alias); $finallist = ""; $builtlist = ""; + $urltable_nesting = ""; $aliasnesting[$name] = $name; foreach ($addresses as $address) { if (empty($address)) @@ -474,13 +466,18 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr $linelength = strlen($builtlist); $tmpline = ""; if(is_alias($address)) { - if (get_alias_type($address) == 'urltable'){ + if (alias_get_type($address) == 'urltable') { // Feature#1603. For this type of alias we do not need to recursively call filter_generate_nested_alias. Just load IPs from the file. - $urlfn = alias_expand_urltable($address); - if ($file_as_arr=file($urlfn)){ - foreach($file_as_arr as $line){ + $urltable_netsting = alias_expand_urltable($address); + if (!empty($urltable_nesting)) { + $urlfile_as_arr = file($urltable_nesting); + foreach($urlfile_as_arr as $line) { $address= rtrim($line); - $tmpline .= " $address"; + if ((strlen($tmpline) + $linelength) > 4036) { + $finallist .= "{$tmpline} \\\n"; + $tmpline = ""; + } + $tmpline .= " {$address}"; } } } @@ -493,7 +490,7 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr continue; } $aliasaddrnesting[$address] = $address; - $tmpline = " $address"; + $tmpline = " {$address}"; } if ((strlen($tmpline)+ $linelength) > 4036) { $finallist .= "{$builtlist} \\\n"; |