summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/pkg_edit.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/local/www/pkg_edit.php')
-rw-r--r--src/usr/local/www/pkg_edit.php18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/usr/local/www/pkg_edit.php b/src/usr/local/www/pkg_edit.php
index 19cdb1f..69b4053 100644
--- a/src/usr/local/www/pkg_edit.php
+++ b/src/usr/local/www/pkg_edit.php
@@ -86,10 +86,15 @@ if ($config['installedpackages'] && !is_array($config['installedpackages'][xml_s
$config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'] = array();
}
-// If the first entry in the array is an empty <config/> tag, kill it.
+/* If the first entry in the array is an empty <config/> tag, kill it.
+ * See the following tickets for more:
+ * https://redmine.pfsense.org/issues/7624
+ * https://redmine.pfsense.org/issues/476
+ */
if ($config['installedpackages'] &&
(count($config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config']) > 0) &&
- (count($config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'][0]) == 0)) {
+ (empty($config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'][0])) &&
+ is_array($config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'])) {
array_shift($config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config']);
}
@@ -207,7 +212,12 @@ if ($_POST) {
}
}
- if (isset($id) && $a_pkg[$id]) {
+ /* If the user supplied an ID and it exists, or if id=0
+ * and the settings are invalid, overwrite.
+ * See https://redmine.pfsense.org/issues/7624
+ */
+ if (isset($id) && ($a_pkg[$id] ||
+ (($id == 0) && !is_array($a_pkg[$id])) )) {
$a_pkg[$id] = $pkgarr;
} else {
$a_pkg[] = $pkgarr;
@@ -677,7 +687,7 @@ foreach ($pkg['fields']['field'] as $pkga) {
));
$advfield_count++;
- } else {
+ } else {
if (isset($section)) {
$form->add($section);
}
OpenPOWER on IntegriCloud