Make WordPress Core

Changeset 47649

Timestamp:
04/29/2020 04:18:07 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.8 branch.

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

Location:
branches/4.8
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/4.8

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

    r39051 r47649  
    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.8/src/wp-includes/class-wp-customize-manager.php

    r41429 r47649  
    25282528        add_filter( 'wp_save_post_revision_post_has_changed', array( $this, '_filter_revision_post_has_changed' ), 5, 3 );
    25292529
    2530         // Update the changeset post. The publish_customize_changeset action will cause the settings in the changeset to be saved via WP_Customize_Setting::save().
    2531         $has_kses = ( false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' ) );
    2532         if ( $has_kses ) {
    2533             kses_remove_filters(); // Prevent KSES from corrupting JSON in post_content.
    2534         }
    2535 
    2536         // Note that updating a post with publish status will trigger WP_Customize_Manager::publish_changeset_values().
     2530        /*
     2531         * Update the changeset post. The publish_customize_changeset action will cause the settings in the
     2532         * changeset to be saved via WP_Customize_Setting::save(). Updating a post with publish status will
     2533         * trigger WP_Customize_Manager::publish_changeset_values().
     2534         */
     2535        add_filter( 'wp_insert_post_data', array( $this, 'preserve_insert_changeset_post_content' ), 5, 3 );
    25372536        if ( $changeset_post_id ) {
    25382537            $post_array['edit_date'] = true; // Prevent date clearing.
     
    25442543            }
    25452544        }
    2546         if ( $has_kses ) {
    2547             kses_init_filters();
    2548         }
     2545
     2546        );
     2547
    25492548        $this->_changeset_data = null; // Reset so WP_Customize_Manager::changeset_data() will re-populate with updated contents.
    25502549
     
    25612560
    25622561        return $response;
     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
     2605
     2606
    25632607    }
    25642608
  • branches/4.8/src/wp-includes/class-wp-query.php

    r46494 r47649  
    809809        } elseif ( $qv['p'] ) {
    810810            $this->is_single = true;
    811         } elseif ( ('' !== $qv['hour']) && ('' !== $qv['minute']) &&('' !== $qv['second']) && ('' != $qv['year']) && ('' != $qv['monthnum']) && ('' != $qv['day']) ) {
    812             // If year, month, day, hour, minute, and second are set, a single
    813             // post is being queried.
    814             $this->is_single = true;
    815811        } elseif ( '' != $qv['pagename'] || !empty($qv['page_id']) ) {
    816812            $this->is_page = true;
  • branches/4.8/src/wp-includes/formatting.php

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

    r43394 r47649  
    29742974    global $wpdb;
    29752975
     2976
     2977
     2978
    29762979    $user_id = get_current_user_id();
    29772980
     
    32703273         *
    32713274         * @since 3.9.0
     3275
    32723276         *
    3273          * @param array $data    An array of sanitized attachment post data.
    3274          * @param array $postarr An array of unsanitized attachment post data.
     3277         * @param array $data                An array of slashed, sanitized, and processed attachment post data.
     3278         * @param array $postarr             An array of slashed and sanitized attachment post data, but not processed.
     3279         * @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed attachment post data
     3280         *                                   as originally passed to wp_insert_post().
    32753281         */
    3276         $data = apply_filters( 'wp_insert_attachment_data', $data, $postarr );
     3282        $data = apply_filters( 'wp_insert_attachment_data', $data, $postarr );
    32773283    } else {
    32783284        /**
     
    32803286         *
    32813287         * @since 2.7.0
     3288
    32823289         *
    3283          * @param array $data    An array of slashed post data.
    3284          * @param array $postarr An array of sanitized, but otherwise unmodified post data.
     3290         * @param array $data                An array of slashed, sanitized, and processed post data.
     3291         * @param array $postarr             An array of sanitized (and slashed) but otherwise unmodified post data.
     3292         * @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed post data as
     3293         *                                   originally passed to wp_insert_post().
    32853294         */
    3286         $data = apply_filters( 'wp_insert_post_data', $data, $postarr );
     3295        $data = apply_filters( 'wp_insert_post_data', $data, $postarr );
    32873296    }
    32883297    $data = wp_unslash( $data );
  • branches/4.8/src/wp-includes/user.php

    r40560 r47649  
    16391639
    16401640    if ( $update ) {
    1641         if ( $user_email !== $old_user_data->user_email ) {
     1641        if ( $user_email !== $old_user_data->user_email ) {
    16421642            $data['user_activation_key'] = '';
    16431643        }
  • branches/4.8/tests/phpunit/tests/customize/manager.php

    r40521 r47649  
    893893
    894894    /**
     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
     1039
     1040
     1041
     1042
     1043
     1044
    8951045     * Call count for customize_changeset_save_data filter.
    8961046     *
  • branches/4.8/tests/phpunit/tests/formatting/SanitizeFileName.php

    r37756 r47649  
    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.8/tests/phpunit/tests/user.php

    r40564 r47649  
    916916    }
    917917
    918     function test_changing_email_invalidates_password_reset_key() {
     918    function test_changing_email_invalidates_password_reset_key() {
    919919        global $wpdb;
    920920
     
    941941            'user_nicename' => 'cat',
    942942            'user_email'    => 'foo@bar.dev',
     943
     944
     945
     946
     947
     948
     949
     950
     951
     952
     953
     954
     955
     956
     957
     958
     959
     960
     961
     962
    943963        );
    944964        wp_update_user( $userdata );
Note: See TracChangeset for help on using the changeset viewer.