Make WordPress Core

Changeset 47650

Timestamp:
04/29/2020 04:22:22 PM (4 years ago)
Author:
whyisjake
Message:

Customize: Add additional filters to Customizer to prevent JSON corruption.
User: Invalidate user_activation_key on password update.
Query: Ensure that only a single post can be returned on date/time based queries.
Cache API: Ensure proper escaping around the stats method in the cache API.
Formatting: Expand sanitize_file_name to have better support for utf8 characters.

Brings the changes in [47633], [47634], [47635], [47637], and [47638] to the 4.7 branch.

Props: batmoo, ehti, nickdaugherty, peterwilsoncc, sergeybiryukov, sstoqnov, westi, westonruter, whyisjake, whyisjake, xknown.

Location:
branches/4.7
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/src/wp-includes/cache.php

    r39051 r47650  
    692692        echo '<ul>';
    693693        foreach ($this->cache as $group => $cache) {
    694             echo "<li><strong>Group:</strong> $group - ( " . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>';
     694            echo . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>';
    695695        }
    696696        echo '</ul>';
  • branches/4.7/src/wp-includes/class-wp-customize-manager.php

    r41430 r47650  
    25262526        add_filter( 'wp_save_post_revision_post_has_changed', array( $this, '_filter_revision_post_has_changed' ), 5, 3 );
    25272527
    2528         // Update the changeset post. The publish_customize_changeset action will cause the settings in the changeset to be saved via WP_Customize_Setting::save().
    2529         $has_kses = ( false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' ) );
    2530         if ( $has_kses ) {
    2531             kses_remove_filters(); // Prevent KSES from corrupting JSON in post_content.
    2532         }
    2533 
    2534         // Note that updating a post with publish status will trigger WP_Customize_Manager::publish_changeset_values().
     2528        /*
     2529         * Update the changeset post. The publish_customize_changeset action will cause the settings in the
     2530         * changeset to be saved via WP_Customize_Setting::save(). Updating a post with publish status will
     2531         * trigger WP_Customize_Manager::publish_changeset_values().
     2532         */
     2533        add_filter( 'wp_insert_post_data', array( $this, 'preserve_insert_changeset_post_content' ), 5, 3 );
    25352534        if ( $changeset_post_id ) {
    25362535            $post_array['edit_date'] = true; // Prevent date clearing.
     
    25422541            }
    25432542        }
    2544         if ( $has_kses ) {
    2545             kses_init_filters();
    2546         }
     2543
     2544        );
     2545
    25472546        $this->_changeset_data = null; // Reset so WP_Customize_Manager::changeset_data() will re-populate with updated contents.
    25482547
     
    25592558
    25602559        return $response;
     2560
     2561
     2562
     2563
     2564
     2565
     2566
     2567
     2568
     2569
     2570
     2571
     2572
     2573
     2574
     2575
     2576
     2577
     2578
     2579
     2580
     2581
     2582
     2583
     2584
     2585
     2586
     2587
     2588
     2589
     2590
     2591
     2592
     2593
     2594
     2595
     2596
     2597
     2598
     2599
     2600
     2601
     2602
     2603
     2604
    25612605    }
    25622606
  • branches/4.7/src/wp-includes/class-wp-query.php

    r46495 r47650  
    807807        } elseif ( $qv['p'] ) {
    808808            $this->is_single = true;
    809         } elseif ( ('' !== $qv['hour']) && ('' !== $qv['minute']) &&('' !== $qv['second']) && ('' != $qv['year']) && ('' != $qv['monthnum']) && ('' != $qv['day']) ) {
    810             // If year, month, day, hour, minute, and second are set, a single
    811             // post is being queried.
    812             $this->is_single = true;
    813809        } elseif ( '' != $qv['pagename'] || !empty($qv['page_id']) ) {
    814810            $this->is_page = true;
  • branches/4.7/src/wp-includes/formatting.php

    r45996 r47650  
    17621762    $filename_raw = $filename;
    17631763    $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", "%", "+", chr(0));
     1764
     1765
     1766
     1767
     1768
     1769
     1770
     1771
     1772
     1773
     1774
     1775
     1776
     1777
     1778
     1779
     1780
     1781
    17641782    /**
    17651783     * Filters the list of characters to remove from a filename.
     
    17711789     */
    17721790    $special_chars = apply_filters( 'sanitize_file_name_chars', $special_chars, $filename_raw );
    1773     $filename = preg_replace( "#\x{00a0}#siu", ' ', $filename );
    17741791    $filename = str_replace( $special_chars, '', $filename );
    17751792    $filename = str_replace( array( '%20', '+' ), '-', $filename );
  • branches/4.7/src/wp-includes/post.php

    r43395 r47650  
    29692969    global $wpdb;
    29702970
     2971
     2972
     2973
    29712974    $user_id = get_current_user_id();
    29722975
     
    32653268         *
    32663269         * @since 3.9.0
     3270
    32673271         *
    3268          * @param array $data    An array of sanitized attachment post data.
    3269          * @param array $postarr An array of unsanitized attachment post data.
     3272         * @param array $data                An array of slashed, sanitized, and processed attachment post data.
     3273         * @param array $postarr             An array of slashed and sanitized attachment post data, but not processed.
     3274         * @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed attachment post data
     3275         *                                   as originally passed to wp_insert_post().
    32703276         */
    3271         $data = apply_filters( 'wp_insert_attachment_data', $data, $postarr );
     3277        $data = apply_filters( 'wp_insert_attachment_data', $data, $postarr );
    32723278    } else {
    32733279        /**
     
    32753281         *
    32763282         * @since 2.7.0
     3283
    32773284         *
    3278          * @param array $data    An array of slashed post data.
    3279          * @param array $postarr An array of sanitized, but otherwise unmodified post data.
     3285         * @param array $data                An array of slashed, sanitized, and processed post data.
     3286         * @param array $postarr             An array of sanitized (and slashed) but otherwise unmodified post data.
     3287         * @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed post data as
     3288         *                                   originally passed to wp_insert_post().
    32803289         */
    3281         $data = apply_filters( 'wp_insert_post_data', $data, $postarr );
     3290        $data = apply_filters( 'wp_insert_post_data', $data, $postarr );
    32823291    }
    32833292    $data = wp_unslash( $data );
  • branches/4.7/src/wp-includes/user.php

    r39326 r47650  
    16291629
    16301630    if ( $update ) {
    1631         if ( $user_email !== $old_user_data->user_email ) {
     1631        if ( $user_email !== $old_user_data->user_email ) {
    16321632            $data['user_activation_key'] = '';
    16331633        }
  • branches/4.7/tests/phpunit/tests/customize/manager.php

    r40338 r47650  
    887887
    888888    /**
     889
     890
     891
     892
     893
     894
     895
     896
     897
     898
     899
     900
     901
     902
     903
     904
     905
     906
     907
     908
     909
     910
     911
     912
     913
     914
     915
     916
     917
     918
     919
     920
     921
     922
     923
     924
     925
     926
     927
     928
     929
     930
     931
     932
     933
     934
     935
     936
     937
     938
     939
     940
     941
     942
     943
     944
     945
     946
     947
     948
     949
     950
     951
     952
     953
     954
     955
     956
     957
     958
     959
     960
     961
     962
     963
     964
     965
     966
     967
     968
     969
     970
     971
     972
     973
     974
     975
     976
     977
     978
     979
     980
     981
     982
     983
     984
     985
     986
     987
     988
     989
     990
     991
     992
     993
     994
     995
     996
     997
     998
     999
     1000
     1001
     1002
     1003
     1004
     1005
     1006
     1007
     1008
     1009
     1010
     1011
     1012
     1013
     1014
     1015
     1016
     1017
     1018
     1019
     1020
     1021
     1022
     1023
     1024
     1025
     1026
     1027
     1028
     1029
     1030
     1031
     1032
     1033
     1034
     1035
     1036
     1037
     1038
    8891039     * Call count for customize_changeset_save_data filter.
    8901040     *
  • branches/4.7/tests/phpunit/tests/formatting/SanitizeFileName.php

    r37756 r47650  
    6868        $this->assertEquals( 'no-extension', sanitize_file_name( '_.no-extension' ) );
    6969    }
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
    7086}
  • branches/4.7/tests/phpunit/tests/user.php

    r38768 r47650  
    919919    }
    920920
    921     function test_changing_email_invalidates_password_reset_key() {
     921    function test_changing_email_invalidates_password_reset_key() {
    922922        global $wpdb;
    923923
     
    944944            'user_nicename' => 'cat',
    945945            'user_email'    => 'foo@bar.dev',
     946
     947
     948
     949
     950
     951
     952
     953
     954
     955
     956
     957
     958
     959
     960
     961
     962
     963
     964
     965
    946966        );
    947967        wp_update_user( $userdata );
Note: See TracChangeset for help on using the changeset viewer.