From 15ab2fd52aa3d2971682406a0add82ba453f82f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Sun, 10 Feb 2013 17:09:31 +0100 Subject: [PATCH] check Content-Length to detect aborted uploads --- lib/connector/sabre/directory.php | 10 ++++++++++ lib/connector/sabre/file.php | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php index 6465dcbac3..a5676d656e 100644 --- a/lib/connector/sabre/directory.php +++ b/lib/connector/sabre/directory.php @@ -68,6 +68,16 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa \OC\Files\Filesystem::file_put_contents($partpath, $data); + //detect aborted upload + if (isset($_SERVER['CONTENT_LENGTH']) + && \OC\Files\Filesystem::filesize($partpath) != $_SERVER['CONTENT_LENGTH']) + { + throw new Sabre_DAV_Exception_BadRequest( + 'expected filesize ' . $_SERVER['CONTENT_LENGTH']. + ' got ' . \OC\Files\Filesystem::filesize($partpath) + ); + } + // rename to correct path \OC\Files\Filesystem::rename($partpath, $newPath); diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php index 279615b923..ab342fa2c6 100644 --- a/lib/connector/sabre/file.php +++ b/lib/connector/sabre/file.php @@ -50,6 +50,15 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D \OC\Files\Filesystem::file_put_contents($partpath, $data); + //detect aborted upload + if (isset($_SERVER['CONTENT_LENGTH']) + && \OC\Files\Filesystem::filesize($partpath) != $_SERVER['CONTENT_LENGTH']) + { + throw new Sabre_DAV_Exception_BadRequest( + 'expected filesize ' . $_SERVER['CONTENT_LENGTH']. + ' got ' . \OC\Files\Filesystem::filesize($partpath) + ); + } // rename to correct path \OC\Files\Filesystem::rename($partpath, $this->path);