diff options
author | Nils Adermann <naderman@naderman.de> | 2012-05-29 14:27:25 +0200 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2012-05-29 14:27:25 +0200 |
commit | 13f30e8d9d05b69f8b7fda451fa6062b199dd7f7 (patch) | |
tree | 3185a198d57a0cfe1e4f5de052f62c1028a18bf0 /phpBB/includes/functions_upload.php | |
parent | efa96e1817847b94abe6d6d0f3f4a8563339f745 (diff) | |
download | forums-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.php | 33 |
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; |