Skip to content

Commit

Permalink
Merge pull request #26399 from owncloud/stable9.1-userssetup-check-order
Browse files Browse the repository at this point in the history
[stable9.1] Fix initMountPoints to set usersSetup earlier
  • Loading branch information
Vincent Petry authored Oct 19, 2016
2 parents 1f49bf5 + c82d62a commit 2972d35
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions lib/private/Files/Filesystem.php
Original file line number Diff line number Diff line change
Expand Up @@ -394,26 +394,36 @@ public static function initMountPoints($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;
}

self::$usersSetup[$user] = true;

$userManager = \OC::$server->getUserManager();
$userObject = $userManager->get($user);

if (is_null($userObject)) {
\OCP\Util::writeLog('files', ' Backends provided no user object for ' . $user, \OCP\Util::ERROR);
// reset flag, this will make it possible to rethrow the exception if called again
unset(self::$usersSetup[$user]);
throw new \OC\User\NoUserException('Backends provided no user object for ' . $user);
}

$realUid = $userObject->getUID();
// workaround in case of different casings
if ($user !== $userObject->getUID()) {
if ($user !== $realUid) {
$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();
\OCP\Util::writeLog('files', 'initMountPoints() called with wrong user casing. This could be a bug. Expected: "' . $realUid . '" got "' . $user . '". Stack: ' . $stack, \OCP\Util::WARN);
$user = $realUid;

if (isset(self::$usersSetup[$user])) {
return;
}
// again with the correct casing
if (isset(self::$usersSetup[$user])) {
return;
}

self::$usersSetup[$user] = true;
self::$usersSetup[$user] = true;
}

/** @var \OC\Files\Config\MountProviderCollection $mountConfigManager */
$mountConfigManager = \OC::$server->getMountProviderCollection();
Expand Down

0 comments on commit 2972d35

Please sign in to comment.