summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-04-22 11:10:51 +0200
committerVincent Petry <pvince81@owncloud.com>2016-04-22 11:46:33 +0200
commit085bcd7da27e82e4695ff1a2cf961e9b6a820712 (patch)
tree5e48184447e84ede4197fb19181bb54b430400a2
parent7be1094ba5bdfedb15489b45ed4f561b2590fe6a (diff)
downloadnextcloud-server-085bcd7da27e82e4695ff1a2cf961e9b6a820712.tar.gz
nextcloud-server-085bcd7da27e82e4695ff1a2cf961e9b6a820712.zip
Throw NoUserException when attempting to init mount point for null user
In some scenarios initMountPoints is called with an empty user, and also there is no user in the session. In such cases, it is unsafe to let the code move on with an empty user.
-rw-r--r--lib/private/files/filesystem.php3
-rw-r--r--tests/lib/files/filesystem.php22
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php
index a9138b0d2d7..ec9b537a358 100644
--- a/lib/private/files/filesystem.php
+++ b/lib/private/files/filesystem.php
@@ -372,6 +372,9 @@ class Filesystem {
if ($user == '') {
$user = \OC_User::getUser();
}
+ if ($user === null || $user === false || $user === '') {
+ throw new \OC\User\NoUserException('Attempted to initialize mount points for null user and no user in session');
+ }
if (isset(self::$usersSetup[$user])) {
return;
}
diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php
index db1f22f894a..8245af0ace1 100644
--- a/tests/lib/files/filesystem.php
+++ b/tests/lib/files/filesystem.php
@@ -320,6 +320,28 @@ class Filesystem extends \Test\TestCase {
}
/**
+ * @expectedException \OC\User\NoUserException
+ */
+ public function testNullUserThrows() {
+ \OC\Files\Filesystem::initMountPoints(null);
+ }
+
+ public function testNullUserThrowsTwice() {
+ $thrown = 0;
+ try {
+ \OC\Files\Filesystem::initMountPoints(null);
+ } catch (NoUserException $e) {
+ $thrown++;
+ }
+ try {
+ \OC\Files\Filesystem::initMountPoints(null);
+ } catch (NoUserException $e) {
+ $thrown++;
+ }
+ $this->assertEquals(2, $thrown);
+ }
+
+ /**
* Tests that the home storage is used for the user's mount point
*/
public function testHomeMount() {