From 6f6065e5e997ad3062b3f1c659004f692db597f4 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sat, 8 Mar 2014 01:42:24 +0100 Subject: [PATCH] Only accept filenames for existing files in getUploadedFileType Getting metadata from filehandles just meant duplicating work --- lib/mediafile.php | 17 +++-------------- tests/MediaFileTest.php | 3 ++- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/lib/mediafile.php b/lib/mediafile.php index ad696ccca6..e01d2eaeab 100644 --- a/lib/mediafile.php +++ b/lib/mediafile.php @@ -252,7 +252,7 @@ class MediaFile File::respectsQuota($scoped, filesize($stream['uri'])); - $mimetype = MediaFile::getUploadedFileType($fh); + $mimetype = MediaFile::getUploadedFileType($stream['uri']); $filename = File::filename($scoped, "email", $mimetype); @@ -304,19 +304,8 @@ class MediaFile // are unambiguous for most image files, but nearly useless // for office document formats. - if (is_string($f)) { - - // assuming a filename - - $filetype = MIME_Type::autoDetect($f); - - } else { - - // assuming a filehandle - - $stream = stream_get_meta_data($f); - $filetype = MIME_Type::autoDetect($stream['uri']); - } + // We only accept filenames to existing files + $filetype = MIME_Type::autoDetect($f); // The content-based sources for MIME_Type::autoDetect() // are wildly unreliable for office-type documents. If we've diff --git a/tests/MediaFileTest.php b/tests/MediaFileTest.php index b1891574e2..6d96497c5b 100644 --- a/tests/MediaFileTest.php +++ b/tests/MediaFileTest.php @@ -51,7 +51,8 @@ class MediaFileTest extends PHPUnit_Framework_TestCase $tmp = tmpfile(); fwrite($tmp, file_get_contents($filename)); - $type = MediaFile::getUploadedFileType($tmp, basename($filename)); + $tmp_metadata = stream_get_meta_data($tmp); + $type = MediaFile::getUploadedFileType($tmp_metadata['uri'], basename($filename)); $this->assertEquals($expectedType, $type); }