WordPress.org

Make WordPress Core

Ticket #45615: 45615.7.diff

File 45615.7.diff, 2.5 KB (added by joemcgill, 10 months ago)
  • src/wp-includes/functions.php

    diff --git src/wp-includes/functions.php src/wp-includes/functions.php
    index 439a2a30ce..e7832cb6ec 100644
    function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) { 
    25692569                         * This means that common mismatches are forgiven: application/vnd.apple.numbers is often misidentified as application/zip,
    25702570                         * and some media files are commonly named with the wrong extension (.mov instead of .mp4)
    25712571                         */
    2572 
    25732572                        if ( substr( $real_mime, 0, strcspn( $real_mime, '/' ) ) !== substr( $type, 0, strcspn( $type, '/' ) ) ) {
    25742573                                $type = $ext = false;
    25752574                        }
     2575                } elseif ( 'text/plain' === $real_mime ) {
     2576                        // A few common file types are occasionally detected as text/plain; allow those.
     2577                        if ( ! in_array( $type, array(
     2578                                        'text/plain',
     2579                                        'text/csv',
     2580                                        'text/tsv',
     2581                                        'text/vtt',
     2582                                ) )
     2583                        ) {
     2584                                $type = $ext = false;
     2585                        }
    25762586                } else {
    25772587                        if ( $type !== $real_mime ) {
    25782588                                /*
  • tests/phpunit/tests/functions.php

    diff --git tests/phpunit/tests/functions.php tests/phpunit/tests/functions.php
    index f76c342c2f..22e6442b9f 100644
    class Tests_Functions extends WP_UnitTestCase { 
    12301230        }
    12311231
    12321232        /**
    1233          * Data profider for test_wp_get_image_mime();
     1233         * Data provider for test_wp_get_image_mime();
    12341234         */
    12351235        public function _wp_get_image_mime() {
    12361236                $data = array(
    class Tests_Functions extends WP_UnitTestCase { 
    13361336                                        'proper_filename' => false,
    13371337                                ),
    13381338                        ),
     1339                        // Non-image file not allowed even if it's named like one.
     1340                        array(
     1341                                DIR_TESTDATA . '/export/crazy-cdata.xml',
     1342                                'crazy-cdata.jpg',
     1343                                array(
     1344                                        'ext' => false,
     1345                                        'type' => false,
     1346                                        'proper_filename' => false,
     1347                                ),
     1348                        ),
     1349                        // Non-image file not allowed if it's named like something else.
     1350                        array(
     1351                                DIR_TESTDATA . '/export/crazy-cdata.xml',
     1352                                'crazy-cdata.doc',
     1353                                array(
     1354                                        'ext' => false,
     1355                                        'type' => false,
     1356                                        'proper_filename' => false,
     1357                                ),
     1358                        ),
     1359                        // Assorted text/* sample files
     1360                        array(
     1361                                DIR_TESTDATA . '/uploads/test.vtt',
     1362                                'test.vtt',
     1363                                array(
     1364                                        'ext' => 'vtt',
     1365                                        'type' => 'text/vtt',
     1366                                        'proper_filename' => false,
     1367                                ),
     1368                        ),
     1369                        array(
     1370                                DIR_TESTDATA . '/uploads/test.csv',
     1371                                'test.csv',
     1372                                array(
     1373                                        'ext' => 'csv',
     1374                                        'type' => 'text/csv',
     1375                                        'proper_filename' => false,
     1376                                ),
     1377                        ),
    13391378                );
    13401379
    13411380                // Test a few additional file types on single sites.