diff --git a/build/integration/sharing_features/sharing-v1-part3.feature b/build/integration/sharing_features/sharing-v1-part3.feature index 1fe545ed1a80b..2fcfb314b503f 100644 --- a/build/integration/sharing_features/sharing-v1-part3.feature +++ b/build/integration/sharing_features/sharing-v1-part3.feature @@ -607,6 +607,6 @@ Feature: sharing | id | A_NUMBER | | item_source | A_NUMBER | | share_type | 3 | - | permissions | 23 | + | permissions | 31 | | file_target | /subfolder | | expireDate | | diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index ed56858e00ae4..0694ad5f2842e 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -265,11 +265,13 @@ public function update(\OCP\Share\IShare $share) { ->executeStatement(); /* - * Now update the permissions for all children that have not set it to 0 + * Now update the permissions for all user-group children that have not set it to 0. + * Link shares also use parent for display (Manager::setLinkParent) and must be excluded. */ $qb = $this->dbConn->getQueryBuilder(); $qb->update('share') ->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId()))) + ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP))) ->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0))) ->set('permissions', $qb->createNamedParameter($share->getPermissions())) ->set('attributes', $qb->createNamedParameter($shareAttributes))