diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index a9138b0d2d..ec9b537a35 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 db1f22f894..8245af0ace 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -319,6 +319,28 @@ class Filesystem extends \Test\TestCase { \OC\Files\Filesystem::initMountPoints($userId); } + /** + * @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 */