From 7de15bc54c14ce4fa74480f3894f9aec23dbcfba Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 3 Sep 2014 23:06:02 +0200 Subject: [PATCH] [ticket/13031] Only use mimetype guesser guess if it helps us If we already have a mimetype and the guesser's guess is the default fallback, we should keep the already existing mimetype the browser supplied. Otherwise, platforms that might not support mimetype guessers will cause us to always have the mimetype set to application/octet-stream on images. This will prevent users from uploading images. PHPBB3-13031 --- phpBB/includes/functions_upload.php | 7 ++++++- tests/functional/fileupload_form_test.php | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php index a0a67ccf3d..ae04fe737c 100644 --- a/phpBB/includes/functions_upload.php +++ b/phpBB/includes/functions_upload.php @@ -232,7 +232,12 @@ class filespec { if ($this->mimetype_guesser !== null) { - $this->mimetype = $this->mimetype_guesser->guess($filename); + $mimetype = $this->mimetype_guesser->guess($filename); + + if (empty($this->mimetype) || $mimetype !== 'application/octet-stream') + { + $this->mimetype = $mimetype; + } } return $this->mimetype; diff --git a/tests/functional/fileupload_form_test.php b/tests/functional/fileupload_form_test.php index e87953367f..b8c48389e0 100644 --- a/tests/functional/fileupload_form_test.php +++ b/tests/functional/fileupload_form_test.php @@ -107,9 +107,9 @@ class phpbb_functional_fileupload_form_test extends phpbb_functional_test_case $crawler = $this->upload_file('disallowed.jpg', 'image/jpeg'); - // Hitting the ATTACHED_IMAGE_NOT_IMAGE error means we passed the + // Hitting the UNABLE_GET_IMAGE_SIZE error means we passed the // DISALLOWED_CONTENT check - $this->assertContains($this->lang('ATTACHED_IMAGE_NOT_IMAGE'), $crawler->text()); + $this->assertContainsLang('UNABLE_GET_IMAGE_SIZE', $crawler->text()); } public function test_too_large()