浏览代码

Properly check mime type of the uploaded file

Signed-off-by: Julius Härtl <jus@bitgrid.net>
tags/v14.0.0beta1
Julius Härtl 6 年前
父节点
当前提交
2bf51c7b9e
没有帐户链接到提交者的电子邮件

+ 3
- 2
apps/theming/lib/Controller/ThemingController.php 查看文件

@@ -248,8 +248,9 @@ class ThemingController extends Controller {
}

$target = $folder->newFile($key);
$supportedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'text/svg'];
if (!in_array($image['type'], $supportedFormats)) {
$supportedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/svg'];
$detectedMimeType = mime_content_type($image['tmp_name']);
if (!in_array($image['type'], $supportedFormats) || !in_array($detectedMimeType, $supportedFormats)) {
return new DataResponse(
[
'data' => [

+ 7
- 6
apps/theming/tests/Controller/ThemingControllerTest.php 查看文件

@@ -255,7 +255,7 @@ class ThemingControllerTest extends TestCase {
->method('getUploadedFile')
->with('image')
->willReturn([
'tmp_name' => 'logo.pdf',
'tmp_name' => __DIR__ . '/../../../../tests/data/lorem.txt',
'type' => 'application/pdf',
'name' => 'logo.pdf',
'error' => 0,
@@ -295,7 +295,7 @@ class ThemingControllerTest extends TestCase {
['image/gif'],
['image/png'],
['image/svg+xml'],
['text/svg'],
['image/svg']
];
}

@@ -305,6 +305,7 @@ class ThemingControllerTest extends TestCase {
$destination = \OC::$server->getTempManager()->getTemporaryFolder();

touch($tmpLogo);
copy(__DIR__ . '/../../../../tests/data/testimagelarge.svg', $tmpLogo);
$this->request
->expects($this->at(0))
->method('getParam')
@@ -377,10 +378,10 @@ class ThemingControllerTest extends TestCase {

/** @dataProvider dataUpdateImages */
public function testUpdateLogoLoginScreenUpload($folderExists) {
$tmpLogo = \OC::$server->getTempManager()->getTemporaryFolder() . '/logo.svg';
$tmpLogo = \OC::$server->getTempManager()->getTemporaryFolder() . 'logo.png';

touch($tmpLogo);
file_put_contents($tmpLogo, file_get_contents(__DIR__ . '/../../../../tests/data/desktopapp.png'));
copy(__DIR__ . '/../../../../tests/data/desktopapp.png', $tmpLogo);
$this->request
->expects($this->at(0))
->method('getParam')
@@ -392,7 +393,7 @@ class ThemingControllerTest extends TestCase {
->with('image')
->willReturn([
'tmp_name' => $tmpLogo,
'type' => 'text/svg',
'type' => 'image/svg+xml',
'name' => 'logo.svg',
'error' => 0,
]);
@@ -524,7 +525,7 @@ class ThemingControllerTest extends TestCase {
->with('image')
->willReturn([
'tmp_name' => '',
'type' => 'text/svg',
'type' => 'image/svg+xml',
'name' => 'logo.svg',
'error' => $error,
]);

正在加载...
取消
保存