Merge pull request #16755 from owncloud/files-mkcolbackslash
Validate path in getChild
This commit is contained in:
commit
ddd067a414
|
@ -70,8 +70,15 @@ class Directory extends \OC\Connector\Sabre\Node
|
||||||
*
|
*
|
||||||
* @param string $name Name of the file
|
* @param string $name Name of the file
|
||||||
* @param resource|string $data Initial payload
|
* @param resource|string $data Initial payload
|
||||||
* @throws \Sabre\DAV\Exception\Forbidden
|
|
||||||
* @return null|string
|
* @return null|string
|
||||||
|
* @throws Exception\EntityTooLarge
|
||||||
|
* @throws Exception\UnsupportedMediaType
|
||||||
|
* @throws FileLocked
|
||||||
|
* @throws InvalidPath
|
||||||
|
* @throws \Sabre\DAV\Exception
|
||||||
|
* @throws \Sabre\DAV\Exception\BadRequest
|
||||||
|
* @throws \Sabre\DAV\Exception\Forbidden
|
||||||
|
* @throws \Sabre\DAV\Exception\ServiceUnavailable
|
||||||
*/
|
*/
|
||||||
public function createFile($name, $data = null) {
|
public function createFile($name, $data = null) {
|
||||||
|
|
||||||
|
@ -115,8 +122,10 @@ class Directory extends \OC\Connector\Sabre\Node
|
||||||
* Creates a new subdirectory
|
* Creates a new subdirectory
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
|
* @throws FileLocked
|
||||||
|
* @throws InvalidPath
|
||||||
* @throws \Sabre\DAV\Exception\Forbidden
|
* @throws \Sabre\DAV\Exception\Forbidden
|
||||||
* @return void
|
* @throws \Sabre\DAV\Exception\ServiceUnavailable
|
||||||
*/
|
*/
|
||||||
public function createDirectory($name) {
|
public function createDirectory($name) {
|
||||||
try {
|
try {
|
||||||
|
@ -143,16 +152,21 @@ class Directory extends \OC\Connector\Sabre\Node
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param \OCP\Files\FileInfo $info
|
* @param \OCP\Files\FileInfo $info
|
||||||
* @throws \Sabre\DAV\Exception\FileNotFound
|
|
||||||
* @return \Sabre\DAV\INode
|
* @return \Sabre\DAV\INode
|
||||||
|
* @throws InvalidPath
|
||||||
|
* @throws \Sabre\DAV\Exception\NotFound
|
||||||
|
* @throws \Sabre\DAV\Exception\ServiceUnavailable
|
||||||
*/
|
*/
|
||||||
public function getChild($name, $info = null) {
|
public function getChild($name, $info = null) {
|
||||||
$path = $this->path . '/' . $name;
|
$path = $this->path . '/' . $name;
|
||||||
if (is_null($info)) {
|
if (is_null($info)) {
|
||||||
try {
|
try {
|
||||||
|
$this->fileView->verifyPath($this->path, $name);
|
||||||
$info = $this->fileView->getFileInfo($path);
|
$info = $this->fileView->getFileInfo($path);
|
||||||
} catch (\OCP\Files\StorageNotAvailableException $e) {
|
} catch (\OCP\Files\StorageNotAvailableException $e) {
|
||||||
throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage());
|
throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage());
|
||||||
|
} catch (\OCP\Files\InvalidPathException $ex) {
|
||||||
|
throw new InvalidPath($ex->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,6 +225,7 @@ class Directory extends \OC\Connector\Sabre\Node
|
||||||
* Deletes all files in this directory, and then itself
|
* Deletes all files in this directory, and then itself
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
|
* @throws FileLocked
|
||||||
* @throws \Sabre\DAV\Exception\Forbidden
|
* @throws \Sabre\DAV\Exception\Forbidden
|
||||||
*/
|
*/
|
||||||
public function delete() {
|
public function delete() {
|
||||||
|
|
|
@ -140,7 +140,33 @@ class Test_OC_Connector_Sabre_Directory extends \Test\TestCase {
|
||||||
|
|
||||||
// calling a second time just returns the cached values,
|
// calling a second time just returns the cached values,
|
||||||
// does not call getDirectoryContents again
|
// does not call getDirectoryContents again
|
||||||
$nodes = $dir->getChildren();
|
$dir->getChildren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Sabre\DAV\Exception\ServiceUnavailable
|
||||||
|
*/
|
||||||
|
public function testGetChildThrowStorageNotAvailableException() {
|
||||||
|
$this->view->expects($this->once())
|
||||||
|
->method('getFileInfo')
|
||||||
|
->willThrowException(new \OCP\Files\StorageNotAvailableException());
|
||||||
|
|
||||||
|
$dir = new \OC\Connector\Sabre\Directory($this->view, $this->info);
|
||||||
|
$dir->getChild('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OC\Connector\Sabre\Exception\InvalidPath
|
||||||
|
*/
|
||||||
|
public function testGetChildThrowInvalidPath() {
|
||||||
|
$this->view->expects($this->once())
|
||||||
|
->method('verifyPath')
|
||||||
|
->willThrowException(new \OCP\Files\InvalidPathException());
|
||||||
|
$this->view->expects($this->never())
|
||||||
|
->method('getFileInfo');
|
||||||
|
|
||||||
|
$dir = new \OC\Connector\Sabre\Directory($this->view, $this->info);
|
||||||
|
$dir->getChild('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetQuotaInfo() {
|
public function testGetQuotaInfo() {
|
||||||
|
|
Loading…
Reference in New Issue