Make WordPress Core

Changeset 49403


Ignore:
Timestamp:
10/29/2020 07:05:53 PM (6 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.3 branch.

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

Location:
branches/4.3
Files:
1 added
15 edited

Legend:

Unmodified
Added
Removed
  • branches/4.3

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

    r32917 r49403  
    7171?>
    7272<script type="text/javascript">
    73 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();}}};
    74 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
    75         pagenow = '<?php echo $current_screen->id; ?>',
    76         typenow = '<?php echo $current_screen->post_type; ?>',
    77         adminpage = '<?php echo $admin_body_class; ?>',
    78         thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format['thousands_sep'] ); ?>',
    79         decimalPoint = '<?php echo addslashes( $wp_locale->number_format['decimal_point'] ); ?>',
     73addLoadEvent = 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();}}};
     74var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>',
     75        pagenow = '<?php echo esc_js( $current_screen->id ); ?>',
     76        typenow = '<?php echo esc_js( $current_screen->post_type ); ?>',
     77        adminpage = '<?php echo esc_js( $admin_body_class ); ?>',
     78        thousandsSeparator = '<?php echo esc_js( $wp_locale->number_format['thousands_sep'] ); ?>',
     79        decimalPoint = '<?php echo esc_js( $wp_locale->number_format['decimal_point'] ); ?>',
    8080        isRtl = <?php echo (int) is_rtl(); ?>;
    8181</script>
  • branches/4.3/src/wp-admin/custom-background.php

    r32974 r49403  
    461461         */
    462462        public function wp_set_background_image() {
     463                check_ajax_referer( 'custom-background' );
    463464                if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit;
    464465                $attachment_id = absint($_POST['attachment_id']);
  • branches/4.3/src/wp-admin/custom-header.php

    r33180 r49403  
    321321<script type="text/javascript">
    322322(function($){
    323         var default_color = '<?php echo $default_color; ?>',
     323        var default_color = '<?php echo esc_js( $default_color ); ?>',
    324324                header_text_fields;
    325325
  • branches/4.3/src/wp-admin/includes/media.php

    r47982 r49403  
    455455<script type="text/javascript">
    456456addLoadEvent = 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();}}};
    457 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
     457var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
    458458isRtl = <?php echo (int) is_rtl(); ?>;
    459459</script>
  • branches/4.3/src/wp-admin/includes/ms.php

    r33569 r49403  
    978978?>
    979979<script type="text/javascript">
    980 var tb_pathToImage = "<?php echo includes_url( 'js/thickbox/loadingAnimation.gif', 'relative' ); ?>";
     980var tb_pathToImage = "<?php echo esc_js( includes_url( 'js/thickbox/loadingAnimation.gif', 'relative' ) ); ?>";
    981981</script>
    982982<?php
  • branches/4.3/src/wp-admin/includes/template.php

    r41444 r49403  
    16191619addLoadEvent = 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();}}};
    16201620function tb_close(){var win=window.dialogArguments||opener||parent||top;win.tb_remove();}
    1621 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
    1622         pagenow = '<?php echo $current_screen->id; ?>',
    1623         typenow = '<?php echo $current_screen->post_type; ?>',
    1624         adminpage = '<?php echo $admin_body_class; ?>',
    1625         thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format['thousands_sep'] ); ?>',
    1626         decimalPoint = '<?php echo addslashes( $wp_locale->number_format['decimal_point'] ); ?>',
     1621var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>',
     1622        pagenow = '<?php echo esc_js( $current_screen->id ); ?>',
     1623        typenow = '<?php echo esc_js( $current_screen->post_type ); ?>',
     1624        adminpage = '<?php echo esc_js( $admin_body_class ); ?>',
     1625        thousandsSeparator = '<?php echo esc_js( $wp_locale->number_format['thousands_sep'] ); ?>',
     1626        decimalPoint = '<?php echo esc_js( $wp_locale->number_format['decimal_point'] ); ?>',
    16271627        isRtl = <?php echo (int) is_rtl(); ?>;
    16281628</script>
  • branches/4.3/src/wp-admin/js/custom-background.js

    r26158 r49403  
    5757                                // Grab the selected attachment.
    5858                                var attachment = frame.state().get('selection').first();
     59                                var nonceValue = $( '#_wpnonce' ).val() || '';
    5960
    6061                                // Run an AJAX request to set the background image.
    … …  
    6263                                        action: 'set-background-image',
    6364                                        attachment_id: attachment.id,
     65                                        _ajax_nonce: nonceValue,
    6466                                        size: 'full'
    6567                                }).done( function() {
  • branches/4.3/src/wp-admin/js/media-gallery.js

    r26232 r49403  
    22jQuery(function($){
    33        $( 'body' ).bind( 'click.wp-gallery', function(e){
    4                 var target = $( e.target ), id, img_size;
     4                var target = $( e.target ), id, img_size, nonceValue;
    55
    66                if ( target.hasClass( 'wp-set-header' ) ) {
    … …  
    1010                        id = target.data( 'attachment-id' );
    1111                        img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
     12                        nonceValue = $( '#_wpnonce' ).val() && '';
    1213
    1314                        jQuery.post(ajaxurl, {
    1415                                action: 'set-background-image',
    1516                                attachment_id: id,
     17                                _ajax_nonce: nonceValue,
    1618                                size: img_size
    1719                        }, function(){
  • branches/4.3/src/wp-admin/media-new.php

    r32974 r49403  
    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.3/src/wp-admin/network/site-users.php

    r34118 r49403  
    180180
    181181<script type="text/javascript">
    182 var current_site_id = <?php echo $id; ?>;
     182var current_site_id = <?php echo absint( $id ); ?>;
    183183</script>
    184184
  • branches/4.3/src/wp-includes/class-wp-xmlrpc-server.php

    r40697 r49403  
    34843484                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
    34853485
     3486                if (
     3487                        'publish' === get_post_status( $post_id ) &&
     3488                        ! current_user_can( 'edit_post', $post_id ) &&
     3489                        post_password_required( $post_id )
     3490                ) {
     3491                        return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) );
     3492                }
     3493
     3494                if (
     3495                        'private' === get_post_status( $post_id ) &&
     3496                        ! current_user_can( 'read_post', $post_id )
     3497                ) {
     3498                        return new IXR_Error( 403, __( 'Sorry, you are not allowed to comment on this post.' ) );
     3499                }
     3500
    34863501                $comment = array();
    34873502                $comment['comment_post_ID'] = $post_id;
    … …  
    38483863                do_action( 'xmlrpc_call', 'wp.getMediaItem' );
    38493864
    3850                 if ( ! $attachment = get_post($attachment_id) )
     3865                $attachment = get_post( $attachment_id );
     3866                if ( ! $attachment || 'attachment' !== $attachment->post_type ) {
    38513867                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
     3868                }
    38523869
    38533870                return $this->_prepare_media_item( $attachment );
  • branches/4.3/src/wp-includes/formatting.php

    r47656 r49403  
    10051005 */
    10061006function utf8_uri_encode( $utf8_string, $length = 0 ) {
    1007         $unicode = '';
    1008         $values = array();
    1009         $num_octets = 1;
     1007        $unicode        = '';
     1008        $values         = array();
     1009        $num_octets     = 1;
    10101010        $unicode_length = 0;
    10111011
    … …  
    10191019
    10201020                if ( $value < 128 ) {
    1021                         if ( $length && ( $unicode_length >= $length ) )
     1021                        if ( $length && ( $unicode_length >= $length ) ) {
    10221022                                break;
    1023                         $unicode .= chr($value);
     1023                        }
     1024                        $unicode .= chr( $value );
    10241025                        $unicode_length++;
    10251026                } else {
    … …  
    15411542                        $title = mb_strtolower($title, 'UTF-8');
    15421543                }
    1543                 $title = utf8_uri_encode($title, 200);
     1544                $title = utf8_uri_encode( $title, 200 );
    15441545        }
    15451546
  • branches/4.3/src/wp-includes/meta.php

    r33231 r49403  
    16361636 * @return bool True if the key is protected, false otherwise.
    16371637 */
    1638 function is_protected_meta( $meta_key, $meta_type = null ) {
    1639         $protected = ( '_' == $meta_key[0] );
     1638function is_protected_meta( $meta_key, $meta_type = '' ) {
     1639        $sanitized_key = preg_replace( "/[^\x20-\x7E\p{L}]/", '', $meta_key );
     1640        $protected     = strlen( $sanitized_key ) > 0 && ( '_' === $sanitized_key[0] );
    16401641
    16411642        /**
  • branches/4.3/tests/phpunit/tests/formatting/Utf8UriEncode.php

    r25002 r49403  
    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.