Correctly remove the charset from finfo mimetype

This commit is contained in:
Joas Schilling 2016-09-02 13:29:30 +02:00
parent 8c4e5a923a
commit 810f99c1c9
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
2 changed files with 4 additions and 3 deletions

View File

@ -200,7 +200,7 @@ class Detection implements IMimeTypeDetector {
$info = @strtolower(finfo_file($finfo, $path)); $info = @strtolower(finfo_file($finfo, $path));
finfo_close($finfo); finfo_close($finfo);
if ($info) { if ($info) {
$mimeType = substr($info, 0, strpos($info, ';')); $mimeType = strpos($info, ';') !== false ? substr($info, 0, strpos($info, ';')) : $info;
return empty($mimeType) ? 'application/octet-stream' : $mimeType; return empty($mimeType) ? 'application/octet-stream' : $mimeType;
} }
@ -238,7 +238,8 @@ class Detection implements IMimeTypeDetector {
public function detectString($data) { public function detectString($data) {
if (function_exists('finfo_open') and function_exists('finfo_file')) { if (function_exists('finfo_open') and function_exists('finfo_file')) {
$finfo = finfo_open(FILEINFO_MIME); $finfo = finfo_open(FILEINFO_MIME);
return finfo_buffer($finfo, $data); $info = finfo_buffer($finfo, $data);
return strpos($info, ';') !== false ? substr($info, 0, strpos($info, ';')) : $info;
} else { } else {
$tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); $tmpFile = \OC::$server->getTempManager()->getTemporaryFile();
$fh = fopen($tmpFile, 'wb'); $fh = fopen($tmpFile, 'wb');

View File

@ -81,7 +81,7 @@ class DetectionTest extends \Test\TestCase {
public function testDetectString() { public function testDetectString() {
$result = $this->detection->detectString("/data/data.tar.gz"); $result = $this->detection->detectString("/data/data.tar.gz");
$expected = 'text/plain; charset=us-ascii'; $expected = 'text/plain';
$this->assertEquals($expected, $result); $this->assertEquals($expected, $result);
} }