diff options
author | Vincent Petry <pvince81@owncloud.com> | 2016-10-18 17:44:33 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-18 17:44:33 +0300 |
commit | 23744e774574f09531723158fe8337d98015779b (patch) | |
tree | b5d617b7047a28ba689505ea942422b8c98ec13a /lib | |
parent | c3da32f83bcf2492c222f9404d122b3ea8208090 (diff) | |
parent | 6fe9f1df7ac2f2dbb84ac78506d2eb5f82dde4e0 (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.php | 3 | ||||
-rw-r--r-- | lib/private/Files/Filesystem.php | 14 | ||||
-rw-r--r-- | lib/private/Files/Node/Root.php | 9 | ||||
-rw-r--r-- | lib/private/Share/Share.php | 9 |
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(); |