+
+ $magic = MimeMagic::singleton();
+ // Use the extension only, rather than magic numbers, to avoid opening
+ // up vulnerabilities due to uploads of files with allowed extensions
+ // but disallowed types.
+ $type = $magic->guessTypesForExtension( $ext );
+
+ /**
+ * Double-check some security settings that were done on upload but might
+ * have changed since.
+ */
+ if ( $safe ) {
+ global $wgFileBlacklist, $wgCheckFileExtensions, $wgStrictFileExtensions,
+ $wgFileExtensions, $wgVerifyMimeType, $wgMimeTypeBlacklist;
+ list( , $extList ) = UploadBase::splitExtensions( $filename );
+ if ( UploadBase::checkFileExtensionList( $extList, $wgFileBlacklist ) ) {
+ return 'unknown/unknown';
+ }
+ if ( $wgCheckFileExtensions && $wgStrictFileExtensions
+ && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions ) )
+ {
+ return 'unknown/unknown';
+ }
+ if ( $wgVerifyMimeType && in_array( strtolower( $type ), $wgMimeTypeBlacklist ) ) {
+ return 'unknown/unknown';
+ }