From 7e1dd0b25eae700eb5d44caba53b5fe6c738f3c0 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Sun, 23 Jun 2024 22:47:32 +0200 Subject: [PATCH 1/2] fix(taskprocessing): input validation was dropping some optional inputs Signed-off-by: Julien Veyssier --- lib/private/TaskProcessing/Manager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index e214ea77d70..0f93a672ed3 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -489,7 +489,7 @@ class Manager implements IManager { * @psalm-template T */ private function removeSuperfluousArrayKeys(array $array, ...$specs): array { - $keys = array_unique(array_reduce($specs, fn ($carry, $spec) => $carry + array_keys($spec), [])); + $keys = array_unique(array_reduce($specs, fn ($carry, $spec) => array_merge($carry, array_keys($spec)), [])); $values = array_map(fn (string $key) => $array[$key], $keys); return array_combine($keys, $values); } From 42cf03d73d6115c59f6bdfb447956817729e8e87 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Mon, 1 Jul 2024 11:32:34 +0200 Subject: [PATCH 2/2] fix(taskprocessing): in removeSuperfluousArrayKeys, don't try to keep input/output keys that are not in the task values Signed-off-by: Julien Veyssier --- lib/private/TaskProcessing/Manager.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 0f93a672ed3..aca820dbeb7 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -490,6 +490,7 @@ class Manager implements IManager { */ private function removeSuperfluousArrayKeys(array $array, ...$specs): array { $keys = array_unique(array_reduce($specs, fn ($carry, $spec) => array_merge($carry, array_keys($spec)), [])); + $keys = array_filter($keys, fn ($key) => array_key_exists($key, $array)); $values = array_map(fn (string $key) => $array[$key], $keys); return array_combine($keys, $values); }