From e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 5 Sep 2014 14:54:06 +0200 Subject: Catch exceptions when moving files When moving files on storages that don't expose permissions, the storage itself might throw an exception when the permission is denied. This fix ensures that exceptions are caught and forwarded to the client instead of just hanging. --- apps/files/ajax/move.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'apps/files/ajax') diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php index 3a07554ad00..12760d4415f 100644 --- a/apps/files/ajax/move.php +++ b/apps/files/ajax/move.php @@ -19,10 +19,16 @@ if(\OC\Files\Filesystem::file_exists($target . '/' . $file)) { if ($target != '' || strtolower($file) != 'shared') { $targetFile = \OC\Files\Filesystem::normalizePath($target . '/' . $file); $sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file); - if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); - } else { - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); + try { + if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { + OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); + } else { + OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); + } + } catch (\OCP\Files\NotPermittedException $e) { + OCP\JSON::error(array("data" => array( "message" => $l->t("Permission denied") ))); + } catch (\Exception $e) { + OCP\JSON::error(array("data" => array( "message" => $e->getMessage()))); } }else{ OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); -- cgit v1.2.3