diff options
author | Valerio Ponte <valerio.ponte@gmail.com> | 2013-03-20 22:37:02 +0100 |
---|---|---|
committer | Valerio Ponte <valerio.ponte@gmail.com> | 2013-03-20 22:37:02 +0100 |
commit | 033c94d076e3340a4a472d1b3f61ade5f22009ea (patch) | |
tree | 442d34b7cdaf3c7394a5fd7d7e92adaa632abedc /lib/files.php | |
parent | ef6c6e77b13a0f2be7889f7a9b3906cf38ee0d76 (diff) | |
download | nextcloud-server-033c94d076e3340a4a472d1b3f61ade5f22009ea.tar.gz nextcloud-server-033c94d076e3340a4a472d1b3f61ade5f22009ea.zip |
fixed xsendfile zip generation race condition
Diffstat (limited to 'lib/files.php')
-rw-r--r-- | lib/files.php | 18 |
1 files changed, 8 insertions, 10 deletions
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 { |