From afbcb179b2c92b5cc52351b26a68bb991e51501e Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Sat, 7 Aug 2021 18:22:25 +0000 Subject: [PATCH] [CONTROLLER][AdminPanel] Further ensure form validity --- src/Controller/AdminPanel.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Controller/AdminPanel.php b/src/Controller/AdminPanel.php index 6d863873ba..231b1cd61d 100644 --- a/src/Controller/AdminPanel.php +++ b/src/Controller/AdminPanel.php @@ -72,11 +72,17 @@ class AdminPanel extends Controller $data = $form->getData(); if ($form->isValid() && array_key_exists('setting', $data)) { [$section, $setting] = explode(':', $data['setting']); + if (!isset($defaults[$section]) && !isset($defaults[$section][$setting])) { + // @codeCoverageIgnoreStart + throw new ClientException(_m('The supplied field doesn\'t exist')); + // @codeCoverageIgnoreEnd + } + foreach ([ - 'int' => FILTER_VALIDATE_INT, - 'bool' => FILTER_VALIDATE_BOOL, + 'int' => FILTER_VALIDATE_INT, + 'bool' => FILTER_VALIDATE_BOOL, 'string' => [fn ($v) => strstr($v, ',') === false, fn ($v) => $v], - 'array' => [fn ($v) => strstr($v, ',') !== false, function ($v) { Formatting::toArray($v, $v); return $v; }], + 'array' => [fn ($v) => strstr($v, ',') !== false, function ($v) { Formatting::toArray($v, $v); return $v; }], ] as $type => $validator) { if (!is_array($validator)) { $value = filter_var($data['value'], $validator, FILTER_NULL_ON_FAILURE);