diff options
author | Robin Appelman <icewind@owncloud.com> | 2016-05-30 15:44:19 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2016-06-07 14:01:53 +0200 |
commit | 7b1b723e5b04173409117aca1f7e76bed5762d9f (patch) | |
tree | 22e09226a7f4853c3a7d936a33a29d8115af8bcf /tests | |
parent | 46fe2ddf2e7a4413586095143521684a0377daad (diff) | |
download | nextcloud-server-7b1b723e5b04173409117aca1f7e76bed5762d9f.tar.gz nextcloud-server-7b1b723e5b04173409117aca1f7e76bed5762d9f.zip |
dissalow symlinks in local storages that point outside the datadir
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/Files/Storage/LocalTest.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/lib/Files/Storage/LocalTest.php b/tests/lib/Files/Storage/LocalTest.php index 7b8ae6a24b2..cca4d6a6676 100644 --- a/tests/lib/Files/Storage/LocalTest.php +++ b/tests/lib/Files/Storage/LocalTest.php @@ -84,5 +84,36 @@ class LocalTest extends Storage { public function testInvalidArgumentsNoArray() { new \OC\Files\Storage\Local(null); } + + /** + * @expectedException \OCP\Files\ForbiddenException + */ + public function testDisallowSymlinksOutsideDatadir() { + $subDir1 = $this->tmpDir . 'sub1'; + $subDir2 = $this->tmpDir . 'sub2'; + $sym = $this->tmpDir . 'sub1/sym'; + mkdir($subDir1); + mkdir($subDir2); + + symlink($subDir2, $sym); + + $storage = new \OC\Files\Storage\Local(['datadir' => $subDir1]); + + $storage->file_put_contents('sym/foo', 'bar'); + } + + public function testDisallowSymlinksInsideDatadir() { + $subDir1 = $this->tmpDir . 'sub1'; + $subDir2 = $this->tmpDir . 'sub1/sub2'; + $sym = $this->tmpDir . 'sub1/sym'; + mkdir($subDir1); + mkdir($subDir2); + + symlink($subDir2, $sym); + + $storage = new \OC\Files\Storage\Local(['datadir' => $subDir1]); + + $storage->file_put_contents('sym/foo', 'bar'); + } } |