Make WordPress Core

Changeset 49398 for branches/4.8


Ignore:
Timestamp:
10/29/2020 06:54:29 PM (5 years ago)
Author:
whyisjake
Message:

General: WordPress updates

  • XML-RPC: Improve error messages for unprivileged users.
  • External Libraries: Disable deserialization in Requests_Utility_FilteredIterator
  • Embeds: Disable embeds on deactivated Multisite sites.
  • Coding standards: Modify escaping functions to avoid potential false positives.
  • XML-RPC: Return error message if attachment ID is incorrect.
  • Upgrade/install: Improve logic check when determining installation status.
  • Meta: Sanitize meta key before checking protection status.
  • Themes: Ensure that only privileged users can set a background image when a theme is using the deprecated custom background page.

Brings the changes from [49380,49382-49388] to the 4.8 branch.

Props xknown, zieladam, peterwilsoncc, whyisjake, desrosj, dd32.

Location:
branches/4.8
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • branches/4.8

  • branches/4.8/src/wp-admin/admin-header.php

    r39326 r49398  
    7676?>
    7777<script type="text/javascript">
    78 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
    79 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
    80     pagenow = '<?php echo $current_screen->id; ?>',
    81     typenow = '<?php echo $current_screen->post_type; ?>',
    82     adminpage = '<?php echo $admin_body_class; ?>',
    83     thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format['thousands_sep'] ); ?>',
    84     decimalPoint = '<?php echo addslashes( $wp_locale->number_format['decimal_point'] ); ?>',
     78addLoadEvent = function(func){if(typeof jQuery!=='undefined')jQuery(document).ready(func);else if(typeof wpOnload!=='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
     79var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>',
     80    pagenow = '<?php echo esc_js( $current_screen->id ); ?>',
     81    typenow = '<?php echo esc_js( $current_screen->post_type ); ?>',
     82    adminpage = '<?php echo esc_js( $admin_body_class ); ?>',
     83    thousandsSeparator = '<?php echo esc_js( $wp_locale->number_format['thousands_sep'] ); ?>',
     84    decimalPoint = '<?php echo esc_js( $wp_locale->number_format['decimal_point'] ); ?>',
    8585    isRtl = <?php echo (int) is_rtl(); ?>;
    8686</script>
  • branches/4.8/src/wp-admin/custom-background.php

    r38948 r49398  
    545545     */
    546546    public function wp_set_background_image() {
     547        check_ajax_referer( 'custom-background' );
    547548        if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit;
    548549        $attachment_id = absint($_POST['attachment_id']);
  • branches/4.8/src/wp-admin/custom-header.php

    r40788 r49398  
    327327<script type="text/javascript">
    328328(function($){
    329     var default_color = '<?php echo $default_color; ?>',
     329    var default_color = '<?php echo esc_js( $default_color ); ?>',
    330330        header_text_fields;
    331331
  • branches/4.8/src/wp-admin/includes/media.php

    r47980 r49398  
    473473<script type="text/javascript">
    474474addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
    475 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
     475var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
    476476isRtl = <?php echo (int) is_rtl(); ?>;
    477477</script>
  • branches/4.8/src/wp-admin/includes/ms.php

    r40632 r49398  
    923923?>
    924924<script type="text/javascript">
    925 var tb_pathToImage = "<?php echo includes_url( 'js/thickbox/loadingAnimation.gif', 'relative' ); ?>";
     925var tb_pathToImage = "<?php echo esc_js( includes_url( 'js/thickbox/loadingAnimation.gif', 'relative' ) ); ?>";
    926926</script>
    927927<?php
  • branches/4.8/src/wp-admin/includes/template.php

    r41412 r49398  
    16181618addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
    16191619function tb_close(){var win=window.dialogArguments||opener||parent||top;win.tb_remove();}
    1620 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
    1621     pagenow = '<?php echo $current_screen->id; ?>',
    1622     typenow = '<?php echo $current_screen->post_type; ?>',
    1623     adminpage = '<?php echo $admin_body_class; ?>',
    1624     thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format['thousands_sep'] ); ?>',
    1625     decimalPoint = '<?php echo addslashes( $wp_locale->number_format['decimal_point'] ); ?>',
     1620var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>',
     1621    pagenow = '<?php echo esc_js( $current_screen->id ); ?>',
     1622    typenow = '<?php echo esc_js( $current_screen->post_type ); ?>',
     1623    adminpage = '<?php echo esc_js( $admin_body_class ); ?>',
     1624    thousandsSeparator = '<?php echo esc_js( $wp_locale->number_format['thousands_sep'] ); ?>',
     1625    decimalPoint = '<?php echo esc_js( $wp_locale->number_format['decimal_point'] ); ?>',
    16261626    isRtl = <?php echo (int) is_rtl(); ?>;
    16271627</script>
  • branches/4.8/src/wp-admin/js/custom-background.js

    r38948 r49398  
    6565                // Grab the selected attachment.
    6666                var attachment = frame.state().get('selection').first();
     67                var nonceValue = $( '#_wpnonce' ).val() || '';
    6768
    6869                // Run an AJAX request to set the background image.
     
    7071                    action: 'set-background-image',
    7172                    attachment_id: attachment.id,
     73                    _ajax_nonce: nonceValue,
    7274                    size: 'full'
    7375                }).done( function() {
  • branches/4.8/src/wp-admin/js/media-gallery.js

    r38293 r49398  
    1010     */
    1111    $( 'body' ).bind( 'click.wp-gallery', function(e) {
    12         var target = $( e.target ), id, img_size;
     12        var target = $( e.target ), id, img_size, nonceValue;
    1313
    1414        if ( target.hasClass( 'wp-set-header' ) ) {
     
    2020            id = target.data( 'attachment-id' );
    2121            img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
     22            nonceValue = $( '#_wpnonce' ).val() && '';
    2223
    2324            /**
     
    2728                action: 'set-background-image',
    2829                attachment_id: id,
     30                _ajax_nonce: nonceValue,
    2931                size: img_size
    3032            }, function() {
  • branches/4.8/src/wp-admin/media-new.php

    r38725 r49398  
    7373
    7474    <script type="text/javascript">
    75     var post_id = <?php echo $post_id; ?>, shortform = 3;
     75    var post_id = <?php echo absint( $post_id ); ?>, shortform = 3;
    7676    </script>
    77     <input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" />
     77    <input type="hidden" name="post_id" id="post_id" value="<?php echo absint( $post_id ); ?>" />
    7878    <?php wp_nonce_field('media-form'); ?>
    7979    <div id="media-items" class="hide-if-no-js"></div>
  • branches/4.8/src/wp-admin/network/site-users.php

    r40780 r49398  
    216216
    217217<script type="text/javascript">
    218 var current_site_id = <?php echo $id; ?>;
     218var current_site_id = <?php echo absint( $id ); ?>;
    219219</script>
    220220
  • branches/4.8/src/wp-includes/Requests/Utility/FilteredIterator.php

    r37428 r49398  
    4343        return $value;
    4444    }
     45
    4546}
  • branches/4.8/src/wp-includes/class-wp-xmlrpc-server.php

    r40692 r49398  
    35813581        }
    35823582
     3583        if (
     3584            'publish' === get_post_status( $post_id ) &&
     3585            ! current_user_can( 'edit_post', $post_id ) &&
     3586            post_password_required( $post_id )
     3587        ) {
     3588            return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) );
     3589        }
     3590
     3591        if (
     3592            'private' === get_post_status( $post_id ) &&
     3593            ! current_user_can( 'read_post', $post_id )
     3594        ) {
     3595            return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) );
     3596        }
     3597
    35833598        $comment = array(
    35843599            'comment_post_ID' => $post_id,
     
    39663981        do_action( 'xmlrpc_call', 'wp.getMediaItem' );
    39673982
    3968         if ( ! $attachment = get_post($attachment_id) )
     3983        $attachment = get_post( $attachment_id );
     3984        if ( ! $attachment || 'attachment' !== $attachment->post_type ) {
    39693985            return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
     3986        }
    39703987
    39713988        return $this->_prepare_media_item( $attachment );
  • branches/4.8/src/wp-includes/formatting.php

    r47649 r49398  
    10771077 */
    10781078function utf8_uri_encode( $utf8_string, $length = 0 ) {
    1079     $unicode = '';
    1080     $values = array();
    1081     $num_octets = 1;
     1079    $unicode        = '';
     1080    $values         = array();
     1081    $num_octets     = 1;
    10821082    $unicode_length = 0;
    10831083
     
    10911091
    10921092        if ( $value < 128 ) {
    1093             if ( $length && ( $unicode_length >= $length ) )
     1093            if ( $length && ( $unicode_length >= $length ) ) {
    10941094                break;
    1095             $unicode .= chr($value);
     1095            }
     1096            $unicode .= chr( $value );
    10961097            $unicode_length++;
    10971098        } else {
     
    19941995            $title = mb_strtolower($title, 'UTF-8');
    19951996        }
    1996         $title = utf8_uri_encode($title, 200);
     1997        $title = utf8_uri_encode( $title, 200 );
    19971998    }
    19981999
  • branches/4.8/src/wp-includes/meta.php

    r42913 r49398  
    917917 * @return bool True if the key is protected, false otherwise.
    918918 */
    919 function is_protected_meta( $meta_key, $meta_type = null ) {
    920     $protected = ( '_' == $meta_key[0] );
     919function is_protected_meta( $meta_key, $meta_type = '' ) {
     920    $sanitized_key = preg_replace( "/[^\x20-\x7E\p{L}]/", '', $meta_key );
     921    $protected     = strlen( $sanitized_key ) > 0 && ( '_' == $sanitized_key[0] );
    921922
    922923    /**
  • branches/4.8/tests/phpunit/tests/formatting/Utf8UriEncode.php

    r25002 r49398  
    1313     */
    1414    function test_percent_encodes_non_reserved_characters( $utf8, $urlencoded ) {
    15         $this->assertEquals($urlencoded, utf8_uri_encode( $utf8 ) );
     15        $this->assertEquals( $urlencoded, utf8_uri_encode( $utf8 ) );
    1616    }
    1717
Note: See TracChangeset for help on using the changeset viewer.