Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-10-18 17:44:33 +0300
committerGitHub <noreply@github.com>2016-10-18 17:44:33 +0300
commit23744e774574f09531723158fe8337d98015779b (patch)
treeb5d617b7047a28ba689505ea942422b8c98ec13a /lib
parentc3da32f83bcf2492c222f9404d122b3ea8208090 (diff)
parent6fe9f1df7ac2f2dbb84ac78506d2eb5f82dde4e0 (diff)
Merge pull request #26271 from owncloud/stable9.1-initmountpoints-userid-casing
[stable9.1] Fix user casing in initMountPoints
Diffstat (limited to 'lib')
-rw-r--r--lib/private/AvatarManager.php3
-rw-r--r--lib/private/Files/Filesystem.php14
-rw-r--r--lib/private/Files/Node/Root.php9
-rw-r--r--lib/private/Share/Share.php9
4 files changed, 32 insertions, 3 deletions
diff --git a/lib/private/AvatarManager.php b/lib/private/AvatarManager.php
index 7eb91b4999e..709ae2d153c 100644
--- a/lib/private/AvatarManager.php
+++ b/lib/private/AvatarManager.php
@@ -84,6 +84,9 @@ class AvatarManager implements IAvatarManager {
throw new \Exception('user does not exist');
}
+ // casing might not be the same
+ $userId = $user->getUID();
+
/*
* Fix for #22119
* Basically we do not want to copy the skeleton folder
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index 3d3345a5c80..12961742f59 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -393,9 +393,6 @@ class Filesystem {
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;
- }
$userManager = \OC::$server->getUserManager();
$userObject = $userManager->get($user);
@@ -405,6 +402,17 @@ class Filesystem {
throw new \OC\User\NoUserException('Backends provided no user object for ' . $user);
}
+ // workaround in case of different casings
+ if ($user !== $userObject->getUID()) {
+ $stack = json_encode(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 50));
+ \OCP\Util::writeLog('files', 'initMountPoints() called with wrong user casing. This could be a bug. Expected: "' . $userObject->getUID() . '" got "' . $user . '". Stack: ' . $stack, \OCP\Util::WARN);
+ }
+ $user = $userObject->getUID();
+
+ if (isset(self::$usersSetup[$user])) {
+ return;
+ }
+
self::$usersSetup[$user] = true;
/** @var \OC\Files\Config\MountProviderCollection $mountConfigManager */
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 476d3ef5fdd..32210b330b6 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -334,6 +334,15 @@ class Root extends Folder implements IRootFolder {
* @return \OCP\Files\Folder
*/
public function getUserFolder($userId) {
+ $userObject = \OC::$server->getUserManager()->get($userId);
+
+ if (is_null($userObject)) {
+ \OCP\Util::writeLog('files', 'Backends provided no user object for ' . $userId, \OCP\Util::ERROR);
+ throw new \OC\User\NoUserException('Backends provided no user object for ' . $userId);
+ }
+
+ $userId = $userObject->getUID();
+
\OC\Files\Filesystem::initMountPoints($userId);
$dir = '/' . $userId;
$folder = null;
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index bcda779e733..1e451b57932 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -134,6 +134,15 @@ class Share extends Constants {
* not '/admin/data/file.txt'
*/
public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false, $recursive = true) {
+ $userManager = \OC::$server->getUserManager();
+ $userObject = $userManager->get($ownerUser);
+
+ if (is_null($ownerUser)) {
+ \OCP\Util::writeLog('files', ' Backends provided no user object for ' . $ownerUser, \OCP\Util::ERROR);
+ throw new \OC\User\NoUserException('Backends provided no user object for ' . $ownerUser);
+ }
+
+ $ownerUser = $userObject->getUID();
Filesystem::initMountPoints($ownerUser);
$shares = $sharePaths = $fileTargets = array();