Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-08-27 17:31:29 +0300
committerJulius Härtl <jus@bitgrid.net>2019-08-27 19:36:24 +0300
commit28313a94bc221a41f499a7e71af2298669be2faa (patch)
treec7ef4c0103543198ef68257c9de7ca4c21e311ae
parent9ac15bc4e9d78c77d982bb017034c8ac1d8e4b54 (diff)
WIP: Check if the share owner is still a valid userbugfix/noid/share-owner-missing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r--lib/private/Share20/DefaultShareProvider.php25
-rw-r--r--lib/private/Share20/Manager.php3
-rw-r--r--lib/private/Share20/Share.php4
3 files changed, 26 insertions, 6 deletions
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index aea50dfcdb6..a5689b28c35 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -597,7 +597,11 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$shares = [];
while ($data = $cursor->fetch()) {
- $shares[$data['fileid']][] = $this->createShare($data);
+ try {
+ $shares[$data['fileid']][] = $this->createShare($data);
+ } catch (\InvalidArgumentException $e) {
+ // ignore exception and leave out share
+ }
}
$cursor->closeCursor();
@@ -727,8 +731,11 @@ class DefaultShareProvider implements IShareProvider {
$shares = [];
while($data = $cursor->fetch()) {
- $shares[] = $this->createShare($data);
- }
+ try {
+ $shares[] = $this->createShare($data);
+ } catch (\InvalidArgumentException $e) {
+ // ignore exception and leave out share
+ } }
$cursor->closeCursor();
return $shares;
@@ -799,7 +806,11 @@ class DefaultShareProvider implements IShareProvider {
while($data = $cursor->fetch()) {
if ($this->isAccessibleResult($data)) {
- $shares[] = $this->createShare($data);
+ try {
+ $shares[] = $this->createShare($data);
+ } catch (\InvalidArgumentException $e) {
+ // ignore exception and leave out share
+ }
}
}
$cursor->closeCursor();
@@ -864,7 +875,11 @@ class DefaultShareProvider implements IShareProvider {
}
if ($this->isAccessibleResult($data)) {
- $shares2[] = $this->createShare($data);
+ try {
+ $shares2[] = $this->createShare($data);
+ } catch (\InvalidArgumentException $e) {
+ // ignore exception and leave out share
+ }
}
}
$cursor->closeCursor();
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 2a2c64cf383..7e1ed382241 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1173,6 +1173,9 @@ class Manager implements IManager {
} catch (ShareNotFound $e) {
unset($shares[$key]);
}
+ if (!$this->userManager->userExists($share->getShareOwner())) {
+ unset($shares[$key]);
+ }
}
return $shares;
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index f9b548c1adf..919a19a4eb4 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -396,7 +396,9 @@ class Share implements \OCP\Share\IShare {
if (!is_string($shareOwner)) {
throw new \InvalidArgumentException();
}
- //TODO checks
+ if(!$this->userManager->userExists($this->shareOwner)) {
+ throw new \InvalidArgumentException('Share owner doesn\'t exist');
+ }
$this->shareOwner = $shareOwner;
return $this;