Merge pull request #13224 from owncloud/simplify-is-valid-path-and-add-unit-tests

Simplify isValidPath and add unit tests
This commit is contained in:
Morris Jobke 2015-01-10 17:35:40 +01:00
commit c91d47e5b3
2 changed files with 34 additions and 1 deletions

View File

@ -504,7 +504,7 @@ class Filesystem {
if (!$path || $path[0] !== '/') {
$path = '/' . $path;
}
if (strstr($path, '/../') || strrchr($path, '/') === '/..') {
if (strpos($path, '/../') !== FALSE || strrchr($path, '/') === '/..') {
return false;
}
return true;

View File

@ -154,6 +154,39 @@ class Filesystem extends \Test\TestCase {
$this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash));
}
public function isValidPathData() {
return array(
array('/', true),
array('/path', true),
array('/foo/bar', true),
array('/foo//bar/', true),
array('/foo////bar', true),
array('/foo//\///bar', true),
array('/foo/bar/.', true),
array('/foo/bar/./', true),
array('/foo/bar/./.', true),
array('/foo/bar/././', true),
array('/foo/bar/././..bar', true),
array('/foo/bar/././..bar/a', true),
array('/foo/bar/././..', false),
array('/foo/bar/././../', false),
array('/foo/bar/.././', false),
array('/foo/bar/../../', false),
array('/foo/bar/../..\\', false),
array('..', false),
array('../', false),
array('../foo/bar', false),
array('..\foo/bar', false),
);
}
/**
* @dataProvider isValidPathData
*/
public function testIsValidPath($path, $expected) {
$this->assertSame($expected, \OC\Files\Filesystem::isValidPath($path));
}
public function normalizePathWindowsAbsolutePathData() {
return array(
array('C:/', 'C:\\'),