From 470c25eff49c38cb1a3ffbb2b0ce4007093bf26e Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 22 Sep 2014 12:19:34 +0200 Subject: WebDAV now throws 403 when deletion did not work Assume a permission issue whenever a file could not be deleted. This is because some storages are not able to return permissions, so a permission denied situation can only be triggered during direct deletion. --- lib/private/connector/sabre/directory.php | 5 ++++- lib/private/connector/sabre/file.php | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'lib/private') diff --git a/lib/private/connector/sabre/directory.php b/lib/private/connector/sabre/directory.php index 9cd7c553f0b..597fbdae0cc 100644 --- a/lib/private/connector/sabre/directory.php +++ b/lib/private/connector/sabre/directory.php @@ -192,7 +192,10 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node throw new \Sabre\DAV\Exception\Forbidden(); } - $this->fileView->rmdir($this->path); + if (!$this->fileView->rmdir($this->path)) { + // assume it wasn't possible to remove due to permission issue + throw new \Sabre\DAV\Exception\Forbidden(); + } } diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 246749903b3..903c3447b56 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -167,7 +167,11 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ if (!$this->info->isDeletable()) { throw new \Sabre\DAV\Exception\Forbidden(); } - $this->fileView->unlink($this->path); + + if (!$this->fileView->unlink($this->path)) { + // assume it wasn't possible to delete due to permissions + throw new \Sabre\DAV\Exception\Forbidden(); + } // remove properties $this->removeProperties(); -- cgit v1.2.3