From 033c94d076e3340a4a472d1b3f61ade5f22009ea Mon Sep 17 00:00:00 2001 From: Valerio Ponte Date: Wed, 20 Mar 2013 22:37:02 +0100 Subject: fixed xsendfile zip generation race condition --- lib/files.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'lib/files.php') diff --git a/lib/files.php b/lib/files.php index 04ba51d9d24..ab7fa1ed096 100644 --- a/lib/files.php +++ b/lib/files.php @@ -59,11 +59,7 @@ class OC_Files { $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - if ($xsendfile) { - $filename = OC_Helper::tmpFileNoClean('.zip'); - }else{ - $filename = OC_Helper::tmpFile('.zip'); - } + $filename = OC_Helper::tmpFile('.zip'); if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } @@ -78,6 +74,9 @@ class OC_Files { } } $zip->close(); + if ($xsendfile) { + $filename = OC_Helper::moveToNoClean($filename); + } $basename = basename($dir); if ($basename) { $name = $basename . '.zip'; @@ -91,17 +90,16 @@ class OC_Files { $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - if ($xsendfile) { - $filename = OC_Helper::tmpFileNoClean('.zip'); - }else{ - $filename = OC_Helper::tmpFile('.zip'); - } + $filename = OC_Helper::tmpFile('.zip'); if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } $file = $dir . '/' . $files; self::zipAddDir($file, $zip); $zip->close(); + if ($xsendfile) { + $filename = OC_Helper::moveToNoClean($filename); + } $name = $files . '.zip'; set_time_limit($executionTime); } else { -- cgit v1.2.3 From 9bebf9b4c81e12cd7ce47852538f6f8f10654e5b Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Fri, 17 May 2013 14:14:12 -0400 Subject: Don't set Content-Length header if size is unknown --- lib/files.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/files.php') diff --git a/lib/files.php b/lib/files.php index ab7fa1ed096..abb1617c25e 100644 --- a/lib/files.php +++ b/lib/files.php @@ -123,8 +123,11 @@ class OC_Files { header('Content-Length: ' . filesize($filename)); self::addSendfileHeader($filename); }else{ + $filesize = \OC\Files\Filesystem::filesize($filename); header('Content-Type: '.\OC\Files\Filesystem::getMimeType($filename)); - header("Content-Length: ".\OC\Files\Filesystem::filesize($filename)); + if ($filesize > -1) { + header("Content-Length: ".$filesize); + } list($storage) = \OC\Files\Filesystem::resolvePath($filename); if ($storage instanceof \OC\Files\Storage\Local) { self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename)); -- cgit v1.2.3