diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2017-08-15 17:04:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-15 17:04:42 +0200 |
commit | 422c3e302a32f9364c4b4fef519f9616454b2dfa (patch) | |
tree | 8c71397e3710f74dc8aa51035bfff72878bf9a93 | |
parent | cf7c4a4439da66055db5b43f9d6bc6e4671aa3e4 (diff) | |
parent | bd6524455bfde6f6bca6f6d548069cb275a12194 (diff) | |
download | nextcloud-server-422c3e302a32f9364c4b4fef519f9616454b2dfa.tar.gz nextcloud-server-422c3e302a32f9364c4b4fef519f9616454b2dfa.zip |
Merge pull request #6099 from nextcloud/issue-3457-no-exception-on-sharee-error
Catch exceptions on error of cloud id resolution
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareesAPIController.php | 26 | ||||
-rw-r--r-- | lib/public/Federation/ICloudIdManager.php | 1 |
2 files changed, 22 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)", diff --git a/lib/public/Federation/ICloudIdManager.php b/lib/public/Federation/ICloudIdManager.php index 7be8f08c6b7..5251c2b95db 100644 --- a/lib/public/Federation/ICloudIdManager.php +++ b/lib/public/Federation/ICloudIdManager.php @@ -29,6 +29,7 @@ interface ICloudIdManager { /** * @param string $cloudId * @return ICloudId + * @throws \InvalidArgumentException * * @since 12.0.0 */ |