From db17598a0e99a1dc8b789fc9523667fe905eb9ef Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <rullzer@owncloud.com>
Date: Tue, 27 Oct 2015 09:14:28 +0100
Subject: [PATCH] Verify the src exists in webdav MOVE

* Unit test added
---
 apps/dav/lib/connector/sabre/filesplugin.php        |  4 ++++
 apps/dav/tests/unit/connector/sabre/filesplugin.php | 13 +++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php
index c9fc78a795..61b5360cac 100644
--- a/apps/dav/lib/connector/sabre/filesplugin.php
+++ b/apps/dav/lib/connector/sabre/filesplugin.php
@@ -132,6 +132,10 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 		if ($sourceDir !== $destinationDir) {
 			$sourceFileInfo = $this->fileView->getFileInfo($source);
 
+			if ($sourceFileInfo === false) {
+				throw new \Sabre\DAV\Exception\NotFound($source . ' does not exist');
+			}
+
 			if (!$sourceFileInfo->isDeletable()) {
 				throw new \Sabre\DAV\Exception\Forbidden($source . " cannot be deleted");
 			}
diff --git a/apps/dav/tests/unit/connector/sabre/filesplugin.php b/apps/dav/tests/unit/connector/sabre/filesplugin.php
index a91ca7a4ff..db3bbabefd 100644
--- a/apps/dav/tests/unit/connector/sabre/filesplugin.php
+++ b/apps/dav/tests/unit/connector/sabre/filesplugin.php
@@ -251,4 +251,17 @@ class FilesPlugin extends \Test\TestCase {
 
 		$this->plugin->checkMove('FolderA/test.txt', 'test.txt');
 	}
+
+	/**
+	 * @expectedException \Sabre\DAV\Exception\NotFound
+	 * @expectedExceptionMessage FolderA/test.txt does not exist
+	 */
+	public function testMoveSrcNotExist() {
+		$this->view->expects($this->once())
+			->method('getFileInfo')
+			->with('FolderA/test.txt')
+			->willReturn(false);
+
+		$this->plugin->checkMove('FolderA/test.txt', 'test.txt');
+	}
 }
-- 
GitLab