From d7adee30a16733838e98b14ceb4aeb175365d91b Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Tue, 18 Feb 2025 14:28:41 +0100 Subject: [PATCH] dnsmasq: call normalizeValue() during interface migration --- plist | 1 + .../Base/FieldTypes/BaseListField.php | 8 +++- .../OPNsense/Dnsmasq/Migrations/M1_0_0.php | 45 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/opnsense/mvc/app/models/OPNsense/Dnsmasq/Migrations/M1_0_0.php diff --git a/plist b/plist index 7b0c023af..e45d98f51 100644 --- a/plist +++ b/plist @@ -725,6 +725,7 @@ /usr/local/opnsense/mvc/app/models/OPNsense/Dnsmasq/FieldTypes/AliasesField.php /usr/local/opnsense/mvc/app/models/OPNsense/Dnsmasq/FieldTypes/DomainIPField.php /usr/local/opnsense/mvc/app/models/OPNsense/Dnsmasq/Menu/Menu.xml +/usr/local/opnsense/mvc/app/models/OPNsense/Dnsmasq/Migrations/M1_0_0.php /usr/local/opnsense/mvc/app/models/OPNsense/Firewall/ACL/ACL.xml /usr/local/opnsense/mvc/app/models/OPNsense/Firewall/Alias.php /usr/local/opnsense/mvc/app/models/OPNsense/Firewall/Alias.xml diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php index 8cfe4e9a3..95fd1e513 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php @@ -173,7 +173,13 @@ abstract class BaseListField extends BaseField { $values = []; - foreach ($this->getNodeData() as $key => $node) { + $data = $this->getNodeData(); + if (!is_array($data)) { + /* XXX e.g. PortField returning a string; do not normalize */ + return; + } + + foreach ($data as $key => $node) { if ($node['selected']) { $values[] = $key; } diff --git a/src/opnsense/mvc/app/models/OPNsense/Dnsmasq/Migrations/M1_0_0.php b/src/opnsense/mvc/app/models/OPNsense/Dnsmasq/Migrations/M1_0_0.php new file mode 100644 index 000000000..f27fb943c --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Dnsmasq/Migrations/M1_0_0.php @@ -0,0 +1,45 @@ +interface->normalizeValue(); + parent::run($model); + } +}