summaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-05-29 19:30:09 +0200
committerVincent Petry <pvince81@owncloud.com>2015-05-29 19:30:09 +0200
commit13617c8bf10ed8e991757099e95da060612e7787 (patch)
tree98342fc0ef034ccdd4b77d7c4c6c17eef5e888e4 /apps/files
parent01a241f71129c3980619f3981d3f7903c1a4cee8 (diff)
downloadnextcloud-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.php11
-rw-r--r--apps/files/tests/ajax_rename.php29
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']);
}
}