From 22f939bb8df2d116a5a709a5f952cb59e5c7a778 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 13 Nov 2023 10:08:01 +0100 Subject: [PATCH] MVC / MenuInitException - handle broken menu xml files more gracefully, dump to error log, but don't crash out with a fatal exception. --- .../controllers/OPNsense/Core/Api/MenuController.php | 3 --- .../mvc/app/models/OPNsense/Base/Menu/MenuSystem.php | 11 +++++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/MenuController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/MenuController.php index b18253654..6710c0029 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/MenuController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/MenuController.php @@ -97,7 +97,6 @@ class MenuController extends ApiControllerBase * request user context sensitive menu (items) * @param string $selected_uri selected uri * @return array menu items - * @throws Menu\MenuInitException when unable to construct menu */ private function getMenu($selected_uri) { @@ -166,7 +165,6 @@ class MenuController extends ApiControllerBase /** * return menu items for this user * @return array - * @throws Menu\MenuInitException when unable to construct menu */ public function treeAction() { @@ -178,7 +176,6 @@ class MenuController extends ApiControllerBase /** * search menu items * @return array - * @throws Menu\MenuInitException when unable to construct menu */ public function searchAction() { diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuSystem.php b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuSystem.php index f68a180e9..cf673afdd 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuSystem.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuSystem.php @@ -108,7 +108,6 @@ class MenuSystem * Load and persist Menu configuration to disk. * @param bool $nowait when the cache is locked, skip waiting for it to become available. * @return SimpleXMLElement - * @throws MenuInitException */ public function persist($nowait = true) { @@ -133,9 +132,13 @@ class MenuSystem foreach (glob($vendor . '/*') as $module) { $menu_cfg_xml = $module . '/Menu/Menu.xml'; if (file_exists($menu_cfg_xml)) { - $domNode = dom_import_simplexml($this->addXML($menu_cfg_xml)); - $domNode = $root->ownerDocument->importNode($domNode, true); - $root->appendChild($domNode); + try { + $domNode = dom_import_simplexml($this->addXML($menu_cfg_xml)); + $domNode = $root->ownerDocument->importNode($domNode, true); + $root->appendChild($domNode); + } catch (MenuInitException $e) { + error_log($e); + } } } }