From 4f6f6456aad8777ac722fb7bb061d2978d702647 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 13 Apr 2013 15:02:47 -0400 Subject: [PATCH 1/2] Check if operation worked before sending post hooks, fixes #2484 --- lib/files/view.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/files/view.php b/lib/files/view.php index f607bb59aa..b0e8291935 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -295,7 +295,7 @@ class View { list ($count, $result) = \OC_Helper::streamCopy($data, $target); fclose($target); fclose($data); - if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) ) { + if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) && $result !== false) { if (!$exists) { \OC_Hook::emit( Filesystem::CLASSNAME, @@ -372,7 +372,7 @@ class View { list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); $storage1->unlink($internalPath1); } - if ($this->fakeRoot == Filesystem::getRoot()) { + if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit( Filesystem::CLASSNAME, Filesystem::signal_post_rename, @@ -452,7 +452,7 @@ class View { $target = $this->fopen($path2 . $postFix2, 'w'); list($count, $result) = \OC_Helper::streamCopy($source, $target); } - if ($this->fakeRoot == Filesystem::getRoot()) { + if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit( Filesystem::CLASSNAME, Filesystem::signal_post_copy, @@ -613,7 +613,7 @@ class View { $result = $storage->$operation($internalPath); } $result = \OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result); - if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot()) { + if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot() && $result !== false) { if ($operation != 'fopen') { //no post hooks for fopen, the file stream is still open $this->runHooks($hooks, $path, true); } From 9ead7c4776bd512c2a50ab917b99dcdc37e8db68 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 13 Apr 2013 15:04:46 -0400 Subject: [PATCH 2/2] Don't unlink old renamed file if stream copy failed --- lib/files/view.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/files/view.php b/lib/files/view.php index b0e8291935..d2d1a99818 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -370,7 +370,9 @@ class View { $target = $this->fopen($path2 . $postFix2, 'w'); list($count, $result) = \OC_Helper::streamCopy($source, $target); list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); - $storage1->unlink($internalPath1); + if ($result !== false) { + $storage1->unlink($internalPath1); + } } if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit(