aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_compress.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2008-06-09 17:44:32 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2008-06-09 17:44:32 +0000
commitcc6d084368a260be9e0c44d3d09da46c250ea776 (patch)
tree8f1223d6c1dd1eb6b25a3681a25cb7b730fe3a16 /phpBB/includes/functions_compress.php
parentf5c7243cf388307ecc2ea73f291b484f102ccd30 (diff)
downloadforums-cc6d084368a260be9e0c44d3d09da46c250ea776.tar
forums-cc6d084368a260be9e0c44d3d09da46c250ea776.tar.gz
forums-cc6d084368a260be9e0c44d3d09da46c250ea776.tar.bz2
forums-cc6d084368a260be9e0c44d3d09da46c250ea776.tar.xz
forums-cc6d084368a260be9e0c44d3d09da46c250ea776.zip
check if folder is not empty (may happen for absolute paths). Thanks paul
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@8639 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_compress.php')
-rw-r--r--phpBB/includes/functions_compress.php34
1 files changed, 29 insertions, 5 deletions
diff --git a/phpBB/includes/functions_compress.php b/phpBB/includes/functions_compress.php
index 852f1c967a..021079deef 100644
--- a/phpBB/includes/functions_compress.php
+++ b/phpBB/includes/functions_compress.php
@@ -179,7 +179,7 @@ class compress_zip extends compress
* Extract archive
*/
function extract($dst)
- {
+ {
// Loop the file, looking for files and folders
$dd_try = false;
rewind($this->fp);
@@ -215,6 +215,12 @@ class compress_zip extends compress
// Create and folders and subfolders if they do not exist
foreach ($folders as $folder)
{
+ $folder = trim($folder);
+ if (!$folder)
+ {
+ continue;
+ }
+
$str = (!empty($str)) ? $str . '/' . $folder : $folder;
if (!is_dir($str))
{
@@ -238,6 +244,12 @@ class compress_zip extends compress
// Create and folders and subfolders if they do not exist
foreach ($folders as $folder)
{
+ $folder = trim($folder);
+ if (!$folder)
+ {
+ continue;
+ }
+
$str = (!empty($str)) ? $str . '/' . $folder : $folder;
if (!is_dir($str))
{
@@ -267,7 +279,7 @@ class compress_zip extends compress
// Not compressed
fwrite($fp, $content);
break;
-
+
case 8:
// Deflate
fwrite($fp, gzinflate($content, $data['uc_size']));
@@ -278,7 +290,7 @@ class compress_zip extends compress
fwrite($fp, bzdecompress($content));
break;
}
-
+
fclose($fp);
break;
@@ -288,11 +300,11 @@ class compress_zip extends compress
// This case should simply never happen.. but it does exist..
case "\x50\x4b\x05\x06":
break 2;
-
+
// 'Packed to Removable Disk', ignore it and look for the next signature...
case 'PK00':
continue 2;
-
+
// We have encountered a header that is weird. Lets look for better data...
default:
if (!$dd_try)
@@ -519,6 +531,12 @@ class compress_tar extends compress
// Create and folders and subfolders if they do not exist
foreach ($folders as $folder)
{
+ $folder = trim($folder);
+ if (!$folder)
+ {
+ continue;
+ }
+
$str = (!empty($str)) ? $str . '/' . $folder : $folder;
if (!is_dir($str))
{
@@ -540,6 +558,12 @@ class compress_tar extends compress
// Create and folders and subfolders if they do not exist
foreach ($folders as $folder)
{
+ $folder = trim($folder);
+ if (!$folder)
+ {
+ continue;
+ }
+
$str = (!empty($str)) ? $str . '/' . $folder : $folder;
if (!is_dir($str))
{