aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_upload.php
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2012-05-29 14:27:25 +0200
committerNils Adermann <naderman@naderman.de>2012-05-29 14:27:25 +0200
commit13f30e8d9d05b69f8b7fda451fa6062b199dd7f7 (patch)
tree3185a198d57a0cfe1e4f5de052f62c1028a18bf0 /phpBB/includes/functions_upload.php
parentefa96e1817847b94abe6d6d0f3f4a8563339f745 (diff)
downloadforums-13f30e8d9d05b69f8b7fda451fa6062b199dd7f7.tar
forums-13f30e8d9d05b69f8b7fda451fa6062b199dd7f7.tar.gz
forums-13f30e8d9d05b69f8b7fda451fa6062b199dd7f7.tar.bz2
forums-13f30e8d9d05b69f8b7fda451fa6062b199dd7f7.tar.xz
forums-13f30e8d9d05b69f8b7fda451fa6062b199dd7f7.zip
[ticket/10908] Download files only up to max_upload_filesize if limit is 0
PHPBB3-10908
Diffstat (limited to 'phpBB/includes/functions_upload.php')
-rw-r--r--phpBB/includes/functions_upload.php33
1 files changed, 29 insertions, 4 deletions
diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php
index d5bbd80242..73ac1df2d2 100644
--- a/phpBB/includes/functions_upload.php
+++ b/phpBB/includes/functions_upload.php
@@ -751,6 +751,31 @@ class fileupload
$filename = $url['path'];
$filesize = 0;
+ $remote_max_filesize = $this->max_filesize;
+ if (!$remote_max_filesize)
+ {
+ $max_filesize = @ini_get('upload_max_filesize');
+
+ if (!empty($max_filesize))
+ {
+ $unit = strtolower(substr($max_filesize, -1, 1));
+ $remote_max_filesize = (int) $max_filesize;
+
+ switch ($unit)
+ {
+ case 'g':
+ $remote_max_filesize *= 1024;
+ // no break
+ case 'm':
+ $remote_max_filesize *= 1024;
+ // no break
+ case 'k':
+ $remote_max_filesize *= 1024;
+ // no break
+ }
+ }
+ }
+
$errno = 0;
$errstr = '';
@@ -779,9 +804,9 @@ class fileupload
$block = @fread($fsock, 1024);
$filesize += strlen($block);
- if ($this->max_filesize && $filesize > $this->max_filesize)
+ if ($remote_max_filesize && $filesize > $remote_max_filesize)
{
- $max_filesize = get_formatted_filesize($this->max_filesize, false);
+ $max_filesize = get_formatted_filesize($remote_max_filesize, false);
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
return $file;
@@ -807,9 +832,9 @@ class fileupload
{
$length = (int) str_replace('content-length: ', '', strtolower($line));
- if ($length && $length > $this->max_filesize)
+ if ($remote_max_filesize && $length && $length > $remote_max_filesize)
{
- $max_filesize = get_formatted_filesize($this->max_filesize, false);
+ $max_filesize = get_formatted_filesize($remote_max_filesize, false);
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
return $file;