Merge pull request #13181 from owncloud/filecache-preventleadingslash
Trim leading or trailing slashes in file cache paths
This commit is contained in:
commit
631d6571fd
|
@ -699,6 +699,6 @@ class Cache {
|
||||||
*/
|
*/
|
||||||
public function normalize($path) {
|
public function normalize($path) {
|
||||||
|
|
||||||
return \OC_Util::normalizeUnicode($path);
|
return trim(\OC_Util::normalizeUnicode($path), '/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ class CacheJail extends CacheWrapper {
|
||||||
if ($path === '') {
|
if ($path === '') {
|
||||||
return $this->root;
|
return $this->root;
|
||||||
} else {
|
} else {
|
||||||
return $this->root . '/' . $path;
|
return $this->root . '/' . ltrim($path, '/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -517,6 +517,42 @@ class Cache extends \Test\TestCase {
|
||||||
$this->assertEquals(1, count($this->cache->getFolderContents('folder')));
|
$this->assertEquals(1, count($this->cache->getFolderContents('folder')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function bogusPathNamesProvider() {
|
||||||
|
return array(
|
||||||
|
array('/bogus.txt', 'bogus.txt'),
|
||||||
|
array('//bogus.txt', 'bogus.txt'),
|
||||||
|
array('bogus/', 'bogus'),
|
||||||
|
array('bogus//', 'bogus'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test bogus paths with leading or doubled slashes
|
||||||
|
*
|
||||||
|
* @dataProvider bogusPathNamesProvider
|
||||||
|
*/
|
||||||
|
public function testBogusPaths($bogusPath, $fixedBogusPath) {
|
||||||
|
$data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
|
||||||
|
|
||||||
|
// put root folder
|
||||||
|
$this->assertFalse($this->cache->get(''));
|
||||||
|
$parentId = $this->cache->put('', $data);
|
||||||
|
$this->assertGreaterThan(0, $parentId);
|
||||||
|
|
||||||
|
$this->assertGreaterThan(0, $this->cache->put($bogusPath, $data));
|
||||||
|
|
||||||
|
$newData = $this->cache->get($fixedBogusPath);
|
||||||
|
$this->assertNotFalse($newData);
|
||||||
|
|
||||||
|
$this->assertEquals($fixedBogusPath, $newData['path']);
|
||||||
|
// parent is the correct one, resolved properly (they used to not be)
|
||||||
|
$this->assertEquals($parentId, $newData['parent']);
|
||||||
|
|
||||||
|
$newDataFromBogus = $this->cache->get($bogusPath);
|
||||||
|
// same entry
|
||||||
|
$this->assertEquals($newData, $newDataFromBogus);
|
||||||
|
}
|
||||||
|
|
||||||
protected function tearDown() {
|
protected function tearDown() {
|
||||||
if ($this->cache) {
|
if ($this->cache) {
|
||||||
$this->cache->clear();
|
$this->cache->clear();
|
||||||
|
|
Loading…
Reference in New Issue