Skip to content
Snippets Groups Projects
Commit dd202d9a authored by Björn Schießle's avatar Björn Schießle
Browse files

updating a existing large file creates new file chunks. Therefore createFile()...

updating a existing large file creates new file chunks. Therefore createFile() needs to check not only if we can write to the parent folder but also if we can update the existing file"
parent 0293d8e0
No related branches found
No related tags found
No related merge requests found
......@@ -50,8 +50,22 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
*/
public function createFile($name, $data = null) {
if (!\OC\Files\Filesystem::isCreatable($this->path)) {
throw new \Sabre_DAV_Exception_Forbidden();
// for chunked upload also updating a existing file is a "createFile"
// because we create all the chunks before reasamble them to the existing file.
if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
// exit if we can't create a new file and we don't updatable existing file
$info = OC_FileChunking::decodeName($name);
if (!\OC\Files\Filesystem::isCreatable($this->path) &&
!\OC\Files\Filesystem::isUpdatable($this->path . '/' . $info['name'])) {
throw new \Sabre_DAV_Exception_Forbidden();
}
} else {
// For non-chunked upload it is enough to check if we can create a new file
if (!\OC\Files\Filesystem::isCreatable($this->path)) {
throw new \Sabre_DAV_Exception_Forbidden();
}
}
$path = $this->path . '/' . $name;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment