aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiBa-NL <pba_2k3@yahoo.com>2014-10-16 16:51:41 +0200
committerPiBa-NL <pba_2k3@yahoo.com>2014-10-16 16:51:41 +0200
commit7d12486648a34c36b14bedd3d6edf2f9a9b658d7 (patch)
tree12c6a543d3986051620aefb93dca55754f40cdfa
parent76898750b9a6795a9846f4e56bb3edd95e76dabf (diff)
downloadpfsense-packages-7d12486648a34c36b14bedd3d6edf2f9a9b658d7.tar.gz
pfsense-packages-7d12486648a34c36b14bedd3d6edf2f9a9b658d7.tar.bz2
pfsense-packages-7d12486648a34c36b14bedd3d6edf2f9a9b658d7.zip
haproxy-devel, fix php crash while installing package, trying to upgrade old configuration from a non existing array.
-rw-r--r--config/haproxy-devel/haproxy.inc9
-rw-r--r--config/haproxy-devel/haproxy_utils.inc18
2 files changed, 22 insertions, 5 deletions
diff --git a/config/haproxy-devel/haproxy.inc b/config/haproxy-devel/haproxy.inc
index e239ab8c..07086bd5 100644
--- a/config/haproxy-devel/haproxy.inc
+++ b/config/haproxy-devel/haproxy.inc
@@ -362,8 +362,6 @@ EOD;
fclose($fd);
exec("chmod a+rx /usr/local/etc/rc.d/haproxy.sh");
-
-
$static_output .= "HAProxy, update configuration\n";
update_output_window($static_output);
@@ -418,7 +416,7 @@ EOD;
}
/* XML update to: pkg v1.3 and 'pool' changed to 'backend_serverpool' because 'pool' was added to listtags() in xmlparse.inc */
- if (is_array($config['installedpackages']['haproxy']['ha_backends']['item'][0]['pool'])) {
+ if (is_arrayset($config,'installedpackages','haproxy','ha_backends','item',0,'pool')) {
$static_output .= "HAProxy, Do XML upgrade, change to backend_serverpool from pool array\n";
update_output_window($static_output);
@@ -431,7 +429,8 @@ EOD;
$writeconfigupdate = true;
}
//also move setting for existing 2.0 installations as only the new variable is used
- if (isset($config['installedpackages']['haproxy']['ha_backends']['item'][0]['pool'])) {
+ if (is_arrayset($config,'installedpackages','haproxy','ha_backends','item',0) &&
+ isset($config['installedpackages']['haproxy']['ha_backends']['item'][0]['pool'])) {
$static_output .= "HAProxy, Do XML upgrade, change to backend_serverpool from pool\n";
update_output_window($static_output);
foreach($config['installedpackages']['haproxy']['ha_backends']['item'] as &$frontend)
@@ -443,7 +442,7 @@ EOD;
$writeconfigupdate = true;
}
// update config to "haproxy-devel 1.5-dev19 pkg v0.5"
- if(is_array($config['installedpackages']['haproxy']['ha_backends']['item'])) {
+ if(is_arrayset($config,'installedpackages','haproxy','ha_backends','item')) {
$static_output .= "HAProxy, Do XML upgrade, update frontend options\n";
update_output_window($static_output);
foreach ($config['installedpackages']['haproxy']['ha_backends']['item'] as &$bind) {
diff --git a/config/haproxy-devel/haproxy_utils.inc b/config/haproxy-devel/haproxy_utils.inc
index 8fb89eab..08906bb0 100644
--- a/config/haproxy-devel/haproxy_utils.inc
+++ b/config/haproxy-devel/haproxy_utils.inc
@@ -44,6 +44,24 @@ if(!function_exists('ifset')){
};
}
+if(!function_exists('is_arrayset')){
+ function is_arrayset(&$array, $items){
+ if (!isset($array))
+ return false;
+ $item = $array;
+ $arg = func_get_args();
+ for($i = 1; $i < count($arg); $i++) {
+
+ $itemindex = $arg[$i];
+ if (!isset($item[$itemindex]) || !is_array($item[$itemindex]))
+ return false;
+ $item = $item[$itemindex];
+
+ }
+ return true;
+ }
+}
+
function haproxy_compareByName($a, $b) {
return strcasecmp($a['name'], $b['name']);
}