Просмотр исходного кода

Ignore invalid template cookie types

Jose Tejera 3 месяцев назад
Родитель
Сommit
fdb5a500f5
2 измененных файлов с 7 добавлено и 1 удалено
  1. 4 1
      lib/TemplateSwitcher.php
  2. 3 0
      tst/TemplateSwitcherTest.php

+ 4 - 1
lib/TemplateSwitcher.php

@@ -73,7 +73,10 @@ class TemplateSwitcher
      */
     public static function getTemplate(): string
     {
-        if (array_key_exists('template', $_COOKIE)) {
+        if (
+            array_key_exists('template', $_COOKIE) &&
+            is_string($_COOKIE['template'])
+        ) {
             $template = basename($_COOKIE['template']);
             if (self::isTemplateAvailable($template)) {
                 return $template;

+ 3 - 0
tst/TemplateSwitcherTest.php

@@ -53,6 +53,9 @@ class TemplateSwitcherTest extends TestCase
 
         $_COOKIE['template'] = $escapeTemplateDirectory;
         $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Fallback on escaping template directory');
+
+        $_COOKIE['template'] = [$customTemplate];
+        $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Fallback on invalid cookie type');
     }
 
     public function testGetAvailableTemplates()