aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrion Vibber <brion@users.mediawiki.org>2005-10-08 05:58:36 +0000
committerBrion Vibber <brion@users.mediawiki.org>2005-10-08 05:58:36 +0000
commite879cebcdfb00f66718a4db9f776c0f6f211234e (patch)
treeaa044b39b87e2aaa95ba248bc432b5f020f73dc3
parent9a9f7f00d24e0b4dcf4d427f300425d765eaef61 (diff)
downloadmediawikicore-e879cebcdfb00f66718a4db9f776c0f6f211234e.tar.gz
mediawikicore-e879cebcdfb00f66718a4db9f776c0f6f211234e.zip
Copy fixes to fix from head
Notes
Notes: http://mediawiki.org/wiki/Special:Code/MediaWiki/11237
-rw-r--r--includes/MimeMagic.php21
-rw-r--r--includes/SpecialUpload.php6
2 files changed, 24 insertions, 3 deletions
diff --git a/includes/MimeMagic.php b/includes/MimeMagic.php
index 5be0ee602954..d72041256522 100644
--- a/includes/MimeMagic.php
+++ b/includes/MimeMagic.php
@@ -304,6 +304,27 @@ class MimeMagic {
return in_array( $mime, $types );
}
+ /**
+ * Returns true if the extension represents a type which can
+ * be reliably detected from its content. Use this to determine
+ * whether strict content checks should be applied to reject
+ * invalid uploads; if we can't identify the type we won't
+ * be able to say if it's invalid.
+ *
+ * @todo Be more accurate when using fancy mime detector plugins;
+ * right now this is the bare minimum getimagesize() list.
+ * @return bool
+ */
+ function isRecognizableExtension( $extension ) {
+ static $types = array(
+ 'gif', 'jpeg', 'jpg', 'png', 'swf', 'psd',
+ 'bmp', 'tiff', 'tif', 'jpc', 'jp2',
+ 'jpx', 'jb2', 'swc', 'iff', 'wbmp',
+ 'xbm'
+ );
+ return in_array( strtolower( $extension ), $types );
+ }
+
/** mime type detection. This uses detectMimeType to detect the mim type of the file,
* but applies additional checks to determine some well known file formats that may be missed
diff --git a/includes/SpecialUpload.php b/includes/SpecialUpload.php
index b12067421f54..52d145b88e2e 100644
--- a/includes/SpecialUpload.php
+++ b/includes/SpecialUpload.php
@@ -701,11 +701,11 @@ class UploadForm {
$magic =& wfGetMimeMagic();
if ( ! $mime || $mime == 'unknown' || $mime == 'unknown/unknown' )
- if ( ! $magic->getTypesForExtension( $extension ) ) {
- wfDebug( "$fname: passing file with unknown mime type and unknown extension\n" );
+ if ( ! $magic->isRecognizableExtension( $extension ) ) {
+ wfDebug( "$fname: passing file with unknown detected mime type; unrecognized extension '$extension', can't verify\n" );
return true;
} else {
- wfDebug( "$fname: rejecting file with unknown mime type but known extension\n" );
+ wfDebug( "$fname: rejecting file with unknown detected mime type; recognized extension '$extension', so probably invalid file\n" );
return false;
}