diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-04-26 01:28:16 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-26 01:28:16 -0300 |
commit | 527369be9c92d7574dbfbd35ab833e6f6b557ba3 (patch) | |
tree | 0a48b35bd8ee4233a3b85d59c481a0e802fe3d38 /apps | |
parent | 4c2c08f376da6c8229522559ca3b6c9c7d0f5358 (diff) | |
parent | 1c40a0520403f84ec72b5925d9218c54987dc37b (diff) | |
download | nextcloud-server-527369be9c92d7574dbfbd35ab833e6f6b557ba3.tar.gz nextcloud-server-527369be9c92d7574dbfbd35ab833e6f6b557ba3.zip |
Merge pull request #4500 from nextcloud/downstream-27118
Restrict proppatch to the proper nodes
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/FilesPlugin.php | 17 | ||||
-rw-r--r-- | apps/dav/lib/Connector/Sabre/TagsPlugin.php | 17 | ||||
-rw-r--r-- | apps/dav/lib/SystemTag/SystemTagPlugin.php | 12 |
3 files changed, 20 insertions, 26 deletions
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index 5a08e37a153..1b1f43df9ea 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -386,25 +386,22 @@ class FilesPlugin extends ServerPlugin { * @return void */ public function handleUpdateProperties($path, PropPatch $propPatch) { - $propPatch->handle(self::LASTMODIFIED_PROPERTYNAME, function($time) use ($path) { + $node = $this->tree->getNodeForPath($path); + if (!($node instanceof \OCA\DAV\Connector\Sabre\Node)) { + return; + } + + $propPatch->handle(self::LASTMODIFIED_PROPERTYNAME, function($time) use ($node) { if (empty($time)) { return false; } - $node = $this->tree->getNodeForPath($path); - if (is_null($node)) { - return 404; - } $node->touch($time); return true; }); - $propPatch->handle(self::GETETAG_PROPERTYNAME, function($etag) use ($path) { + $propPatch->handle(self::GETETAG_PROPERTYNAME, function($etag) use ($node) { if (empty($etag)) { return false; } - $node = $this->tree->getNodeForPath($path); - if (is_null($node)) { - return 404; - } if ($node->setEtag($etag) !== -1) { return true; } diff --git a/apps/dav/lib/Connector/Sabre/TagsPlugin.php b/apps/dav/lib/Connector/Sabre/TagsPlugin.php index 59e4ab4546d..490501a0011 100644 --- a/apps/dav/lib/Connector/Sabre/TagsPlugin.php +++ b/apps/dav/lib/Connector/Sabre/TagsPlugin.php @@ -267,20 +267,17 @@ class TagsPlugin extends \Sabre\DAV\ServerPlugin * @return void */ public function handleUpdateProperties($path, PropPatch $propPatch) { - $propPatch->handle(self::TAGS_PROPERTYNAME, function($tagList) use ($path) { - $node = $this->tree->getNodeForPath($path); - if (is_null($node)) { - return 404; - } + $node = $this->tree->getNodeForPath($path); + if (!($node instanceof \OCA\DAV\Connector\Sabre\Node)) { + return; + } + + $propPatch->handle(self::TAGS_PROPERTYNAME, function($tagList) use ($node) { $this->updateTags($node->getId(), $tagList->getTags()); return true; }); - $propPatch->handle(self::FAVORITE_PROPERTYNAME, function($favState) use ($path) { - $node = $this->tree->getNodeForPath($path); - if (is_null($node)) { - return 404; - } + $propPatch->handle(self::FAVORITE_PROPERTYNAME, function($favState) use ($node) { if ((int)$favState === 1 || $favState === 'true') { $this->getTagger()->tagAs($node->getId(), self::TAG_FAVORITE); } else { diff --git a/apps/dav/lib/SystemTag/SystemTagPlugin.php b/apps/dav/lib/SystemTag/SystemTagPlugin.php index d76bf2e689b..98c730906c6 100644 --- a/apps/dav/lib/SystemTag/SystemTagPlugin.php +++ b/apps/dav/lib/SystemTag/SystemTagPlugin.php @@ -268,17 +268,17 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { * @return void */ public function handleUpdateProperties($path, PropPatch $propPatch) { + $node = $this->server->tree->getNodeForPath($path); + if (!($node instanceof SystemTagNode)) { + return; + } + $propPatch->handle([ self::DISPLAYNAME_PROPERTYNAME, self::USERVISIBLE_PROPERTYNAME, self::USERASSIGNABLE_PROPERTYNAME, self::GROUPS_PROPERTYNAME, - ], function($props) use ($path) { - $node = $this->server->tree->getNodeForPath($path); - if (!($node instanceof SystemTagNode)) { - return; - } - + ], function($props) use ($node) { $tag = $node->getSystemTag(); $name = $tag->getName(); $userVisible = $tag->isUserVisible(); |