MimeAnalyzer::improveTypeFromExtension() may return null
Closed, ResolvedPublic

Description

Contrary to the return type declaration, MimeAnalyzer::improveTypeFromExtension( $mime, $ext ) can return null. This occurs whenever $mime is 'unknown/unknown' and $ext is not a known file extension.

This is surprising behavior. If this method is called with an unknown file extension and a MIME type other than unknown/unknown, it returns the original MIME type unmodified. So "improve" sometimes mean "improve or return unmodified", and other times it means "improve or return null".

The only caller I could find is MWFileProps::getPropsFromPath(), which doesn't appear to be expecting null values.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Change 598274 had a related patch set uploaded (by Ori.livneh; owner: Ori.livneh):
[mediawiki/core@master] mime: Document null return from MimeAnalyzer::improveTypeFromExtension()

https://gerrit.wikimedia.org/r/598274

Change 598274 merged by jenkins-bot:
[mediawiki/core@master] mime: Document null return from MimeAnalyzer::improveTypeFromExtension()

https://gerrit.wikimedia.org/r/598274

This is causing CI failures locally:

1) ApiUploadTest::testUploadChunks
strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated

/home/aaron/PhpstormProjects/mediawiki/core/includes/filerepo/file/File.php:308
/home/aaron/PhpstormProjects/mediawiki/core/includes/utils/MWFileProps.php:83
/home/aaron/PhpstormProjects/mediawiki/core/includes/upload/UploadBase.php:559
/home/aaron/PhpstormProjects/mediawiki/core/includes/upload/UploadFromChunks.php:384
/home/aaron/PhpstormProjects/mediawiki/core/includes/upload/UploadFromChunks.php:243
/home/aaron/PhpstormProjects/mediawiki/core/includes/api/ApiUpload.php:278
/home/aaron/PhpstormProjects/mediawiki/core/includes/api/ApiUpload.php:157
/home/aaron/PhpstormProjects/mediawiki/core/includes/api/ApiUpload.php:128
/home/aaron/PhpstormProjects/mediawiki/core/includes/api/ApiMain.php:1900
/home/aaron/PhpstormProjects/mediawiki/core/includes/api/ApiMain.php:844
/home/aaron/PhpstormProjects/mediawiki/core/tests/phpunit/includes/api/ApiTestCase.php:123
/home/aaron/PhpstormProjects/mediawiki/core/tests/phpunit/includes/api/ApiTestCase.php:163
/home/aaron/PhpstormProjects/mediawiki/core/tests/phpunit/includes/api/ApiUploadTest.php:257
/home/aaron/PhpstormProjects/mediawiki/core/tests/phpunit/MediaWikiIntegrationTestCase.php:500

Change 824807 had a related patch set uploaded (by Aaron Schulz; author: Aaron Schulz):

[mediawiki/core@master] filerepo: avoid PHP 8 warnings in File::splitMime() if $mime is null

https://gerrit.wikimedia.org/r/824807

Change 824807 merged by jenkins-bot:

[mediawiki/core@master] filerepo: avoid PHP 8 warnings in File::splitMime() if $mime is null

https://gerrit.wikimedia.org/r/824807

TheDJ claimed this task.
TheDJ subscribed.

Provisionally closing this as assumed fixed.