From 64d400b5df2a70df1899ade3ebcac0558b0001ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 5 Apr 2016 10:26:04 +0200 Subject: [PATCH] Prevent null to be passed into the closure of callForAllUsers --- lib/private/user/manager.php | 18 +++++++++++------- lib/public/iusermanager.php | 6 +++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index e2486a9ff1..7967f87702 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -33,6 +33,7 @@ namespace OC\User; use OC\Hooks\PublicEmitter; +use OCP\IUserBackend; use OCP\IUserManager; use OCP\IConfig; @@ -170,24 +171,24 @@ class Manager extends PublicEmitter implements IUserManager { /** * Check if the password is valid for the user * - * @param string $loginname + * @param string $loginName * @param string $password * @return mixed the User object on success, false otherwise */ - public function checkPassword($loginname, $password) { - $loginname = str_replace("\0", '', $loginname); + public function checkPassword($loginName, $password) { + $loginName = str_replace("\0", '', $loginName); $password = str_replace("\0", '', $password); foreach ($this->backends as $backend) { if ($backend->implementsActions(\OC_User_Backend::CHECK_PASSWORD)) { - $uid = $backend->checkPassword($loginname, $password); + $uid = $backend->checkPassword($loginName, $password); if ($uid !== false) { return $this->getUserObject($uid, $backend); } } } - \OC::$server->getLogger()->warning('Login failed: \''. $loginname .'\' (Remote IP: \''. \OC::$server->getRequest()->getRemoteAddress(). '\')', ['app' => 'core']); + \OC::$server->getLogger()->warning('Login failed: \''. $loginName .'\' (Remote IP: \''. \OC::$server->getRequest()->getRemoteAddress(). '\')', ['app' => 'core']); return false; } @@ -304,7 +305,7 @@ class Manager extends PublicEmitter implements IUserManager { if ($backend->implementsActions(\OC_User_Backend::COUNT_USERS)) { $backendUsers = $backend->countUsers(); if($backendUsers !== false) { - if($backend instanceof \OCP\IUserBackend) { + if($backend instanceof IUserBackend) { $name = $backend->getBackendName(); } else { $name = get_class($backend); @@ -325,7 +326,7 @@ class Manager extends PublicEmitter implements IUserManager { * If the callback returns false no further users will be retrieved. * * @param \Closure $callback - * @return void + * @param string $search * @since 9.0.0 */ public function callForAllUsers(\Closure $callback, $search = '') { @@ -336,6 +337,9 @@ class Manager extends PublicEmitter implements IUserManager { $users = $backend->getUsers($search, $limit, $offset); foreach ($users as $user) { $user = $this->get($user); + if (is_null($user)) { + continue; + } $return = $callback($user); if ($return === false) { break; diff --git a/lib/public/iusermanager.php b/lib/public/iusermanager.php index 057bd8e89f..6442938a99 100644 --- a/lib/public/iusermanager.php +++ b/lib/public/iusermanager.php @@ -90,12 +90,12 @@ interface IUserManager { /** * Check if the password is valid for the user * - * @param string $loginname + * @param string $loginName * @param string $password * @return mixed the User object on success, false otherwise * @since 8.0.0 */ - public function checkPassword($loginname, $password); + public function checkPassword($loginName, $password); /** * search by user id @@ -138,7 +138,7 @@ interface IUserManager { /** * @param \Closure $callback - * @return void + * @param string $search * @since 9.0.0 */ public function callForAllUsers (\Closure $callback, $search = '');