diff options
author | Joas Schilling <coding@schilljs.com> | 2017-08-14 14:35:28 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-08-14 22:20:57 +0200 |
commit | 2e731122565d5667b582e558f29b737d6cb5c66e (patch) | |
tree | 4feceef0987f592eeeb569f848490bc507ba6282 /apps | |
parent | e0f479a4eb7f297dbe5156b16f42b896c4ceadd4 (diff) | |
download | nextcloud-server-2e731122565d5667b582e558f29b737d6cb5c66e.tar.gz nextcloud-server-2e731122565d5667b582e558f29b737d6cb5c66e.zip |
Catch exceptions on error of cloud id resolution
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareesAPIController.php | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 0e94cfb9d7c..a2ab03bd853 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -336,7 +336,12 @@ class ShareesAPIController extends OCSController { } $lowerSearch = strtolower($search); foreach ($cloudIds as $cloudId) { - list(, $serverUrl) = $this->splitUserRemote($cloudId); + try { + list(, $serverUrl) = $this->splitUserRemote($cloudId); + } catch (\InvalidArgumentException $e) { + continue; + } + if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) { if (strtolower($cloudId) === $lowerSearch) { $result['exactIdMatch'] = true; @@ -387,14 +392,14 @@ class ShareesAPIController extends OCSController { * * @param string $address federated share address * @return array [user, remoteURL] - * @throws \Exception + * @throws \InvalidArgumentException */ public function splitUserRemote($address) { try { $cloudId = $this->cloudIdManager->resolveCloudId($address); return [$cloudId->getUser(), $cloudId->getRemote()]; } catch (\InvalidArgumentException $e) { - throw new \Exception('Invalid Federated Cloud ID', 0, $e); + throw new \InvalidArgumentException('Invalid Federated Cloud ID', 0, $e); } } @@ -611,7 +616,12 @@ class ShareesAPIController extends OCSController { if (isset($contact['isLocalSystemBook'])) { if ($exactEmailMatch) { - $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); + try { + $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); + } catch (\InvalidArgumentException $e) { + continue; + } + if (!$this->hasUserInResult($cloud->getUser())) { $this->result['exact']['users'][] = [ 'label' => $contact['FN'] . " ($emailAddress)", @@ -623,8 +633,14 @@ class ShareesAPIController extends OCSController { } return ['results' => [], 'exact' => [], 'exactIdMatch' => true]; } + if ($this->shareeEnumeration) { - $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); + try { + $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); + } catch (\InvalidArgumentException $e) { + continue; + } + if (!$this->hasUserInResult($cloud->getUser())) { $this->result['users'][] = [ 'label' => $contact['FN'] . " ($emailAddress)", |