diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-05-29 19:30:09 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-05-29 19:30:09 +0200 |
commit | 13617c8bf10ed8e991757099e95da060612e7787 (patch) | |
tree | 98342fc0ef034ccdd4b77d7c4c6c17eef5e888e4 /apps/files | |
parent | 01a241f71129c3980619f3981d3f7903c1a4cee8 (diff) | |
download | nextcloud-server-13617c8bf10ed8e991757099e95da060612e7787.tar.gz nextcloud-server-13617c8bf10ed8e991757099e95da060612e7787.zip |
Check target name on rename with web UI
When renaming over the web UI, check early that the target name is
valid.
This prevents nonsensical error messages when renaming to a name with a
trailing backslash.
Diffstat (limited to 'apps/files')
-rw-r--r-- | apps/files/lib/app.php | 11 | ||||
-rw-r--r-- | apps/files/tests/ajax_rename.php | 29 |
2 files changed, 16 insertions, 24 deletions
diff --git a/apps/files/lib/app.php b/apps/files/lib/app.php index d80024f2470..5bd8c127586 100644 --- a/apps/files/lib/app.php +++ b/apps/files/lib/app.php @@ -74,6 +74,17 @@ class App { 'data' => NULL ); + try { + // check if the new name is conform to file name restrictions + $this->view->verifyPath($dir, $newname); + } catch (\OCP\Files\InvalidPathException $ex) { + $result['data'] = array( + 'message' => $this->l10n->t($ex->getMessage()), + 'code' => 'invalidname', + ); + return $result; + } + $normalizedOldPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $oldname); $normalizedNewPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname); diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php index 34e7f5085dd..a690c7dcb0c 100644 --- a/apps/files/tests/ajax_rename.php +++ b/apps/files/tests/ajax_rename.php @@ -222,36 +222,17 @@ class Test_OC_Files_App_Rename extends \Test\TestCase { } /** - * Test move to a folder that doesn't exist any more + * Test move to invalid name */ - function testRenameToNonExistingFolder() { + function testRenameToInvalidName() { $dir = '/'; $oldname = 'oldname'; - $newname = '/unexist/newname'; - - $this->viewMock->expects($this->any()) - ->method('file_exists') - ->with($this->anything()) - ->will($this->returnValueMap(array( - array('/oldname', true), - array('/unexist', false) - ))); - - $this->viewMock->expects($this->any()) - ->method('getFileInfo') - ->will($this->returnValue(array( - 'fileid' => 123, - 'type' => 'dir', - 'mimetype' => 'httpd/unix-directory', - 'size' => 18, - 'etag' => 'abcdef', - 'directory' => '/unexist', - 'name' => 'new_name', - ))); + $newname = 'abc\\'; $result = $this->files->rename($dir, $oldname, $newname); $this->assertFalse($result['success']); - $this->assertEquals('targetnotfound', $result['data']['code']); + $this->assertEquals('File name contains at least one invalid character', $result['data']['message']); + $this->assertEquals('invalidname', $result['data']['code']); } } |