<?php /* * This file is part of Twig. * * (c) Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Twig_Tests_Loader_FilesystemTest extends PHPUnit_Framework_TestCase { /** * @dataProvider getSecurityTests */ public function testSecurity($template) { $loader = new Twig_Loader_Filesystem(array(dirname(__FILE__).'/../Fixtures')); try { $loader->getCacheKey($template); $this->fail(); } catch (Twig_Error_Loader $e) { $this->assertNotContains('Unable to find template', $e->getMessage()); } } public function getSecurityTests() { return array( array("AutoloaderTest\0.php"), array('..\\AutoloaderTest.php'), array('..\\\\\\AutoloaderTest.php'), array('../AutoloaderTest.php'), array('..////AutoloaderTest.php'), array('./../AutoloaderTest.php'), array('.\\..\\AutoloaderTest.php'), array('././././././../AutoloaderTest.php'), array('.\\./.\\./.\\./../AutoloaderTest.php'), array('foo/../../AutoloaderTest.php'), array('foo\\..\\..\\AutoloaderTest.php'), array('foo/../bar/../../AutoloaderTest.php'), array('foo/bar/../../../AutoloaderTest.php'), array('filters/../../AutoloaderTest.php'), array('filters//..//..//AutoloaderTest.php'), array('filters\\..\\..\\AutoloaderTest.php'), array('filters\\\\..\\\\..\\\\AutoloaderTest.php'), array('filters\\//../\\/\\..\\AutoloaderTest.php'), ); } }