Filter potential dangerous characters in path name

We should not allow / or \ in the postfix here.
This commit is contained in:
Lukas Reschke 2015-03-26 23:14:24 +01:00
parent 746be98e03
commit 9622fbdf29
2 changed files with 18 additions and 0 deletions

View File

@ -54,10 +54,15 @@ class TempManager implements ITempManager {
$this->log = $logger;
}
/**
* @param string $postFix
* @return string
*/
protected function generatePath($postFix) {
if ($postFix) {
$postFix = '.' . ltrim($postFix, '.');
}
$postFix = str_replace(['\\', '/'], '', $postFix);
return $this->tmpBaseDir . '/oc_tmp_' . md5(time() . rand()) . $postFix;
}

View File

@ -151,4 +151,17 @@ class TempManager extends \Test\TestCase {
->with($this->stringContains('Can not create a temporary folder in directory'));
$this->assertFalse($manager->getTemporaryFolder());
}
public function testGeneratePathTraversal() {
$logger = $this->getMock('\Test\NullLogger');
$tmpManager = \Test_Helper::invokePrivate(
$this->getManager($logger),
'generatePath',
['../Traversal\\../FileName']
);
$this->assertStringEndsNotWith('./Traversal\\../FileName', $tmpManager);
$this->assertStringEndsWith('.Traversal..FileName', $tmpManager);
}
}