WordPress.org

Make WordPress Core

Changeset 46493


Ignore:
Timestamp:
10/14/2019 06:38:34 PM (6 weeks ago)
Author:
whyisjake
Message:

Backporting several bug fixes.

  • Query: Remove the static query property.
  • HTTP API: Protect against hex interpretation.
  • Filesystem API: Prevent directory travelersals when creating new folders.
  • Administration: Ensure that admin referer nonce is valid.
  • REST API: Send a Vary: Origin header on GET requests.

Backports [46474], [46475], [46476], [46477], [46478], [46483], [46485] to the 5.0 branch.

Location:
branches/4.9
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/4.9/src/wp-includes/class-wp-query.php

    r42597 r46493  
    530530            , 'attachment_id'
    531531            , 'name'
    532             , 'static'
    533532            , 'pagename'
    534533            , 'page_id'
     
    765764            // post is being queried.
    766765            $this->is_single = true;
    767         } elseif ( '' != $qv['static'] || '' != $qv['pagename'] || !empty($qv['page_id']) ) {
     766        } elseif ( '' != $qv['pagename'] || !empty($qv['page_id']) ) {
    768767            $this->is_page = true;
    769768            $this->is_single = false;
  • branches/4.9/src/wp-includes/class-wp.php

    r44051 r46493  
    1515     * @var array
    1616     */
    17     public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );
     17    public $public_query_vars = array( 'm', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );
    1818
    1919    /**
  • branches/4.9/src/wp-includes/functions.php

    r43989 r46493  
    16131613    if ( file_exists( $target ) )
    16141614        return @is_dir( $target );
     1615
     1616    // Do not allow path traversals.
     1617    if ( false !== strpos( $target, '../' ) || false !== strpos( $target, '..' . DIRECTORY_SEPARATOR ) ) {
     1618        return false;
     1619    }
    16151620
    16161621    // We need to find the permissions of the parent folder that exists and inherit that.
  • branches/4.9/src/wp-includes/http.php

    r42908 r46493  
    542542        } else {
    543543            $ip = gethostbyname( $host );
    544             if ( $ip === $host ) // Error condition for gethostbyname()
    545                 $ip = false;
     544            if ( $ip === $host ) { // Error condition for gethostbyname()
     545                return false;
     546            }
    546547        }
    547548        if ( $ip ) {
  • branches/4.9/src/wp-includes/pluggable.php

    r45975 r46493  
    10801080 */
    10811081function check_admin_referer( $action = -1, $query_arg = '_wpnonce' ) {
    1082     if ( -1 == $action )
     1082    if ( -1 === $action )
    10831083        _doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '3.2.0' );
    10841084
     
    10981098    do_action( 'check_admin_referer', $action, $result );
    10991099
    1100     if ( ! $result && ! ( -1 == $action && strpos( $referer, $adminurl ) === 0 ) ) {
     1100    if ( ! $result && ! ( -1 === $action && strpos( $referer, $adminurl ) === 0 ) ) {
    11011101        wp_nonce_ays( $action );
    11021102        die();
     
    26462646}
    26472647endif;
    2648 
  • branches/4.9/src/wp-includes/rest-api.php

    r42000 r46493  
    545545        header( 'Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE' );
    546546        header( 'Access-Control-Allow-Credentials: true' );
    547         header( 'Vary: Origin' );
     547        header( 'Vary: Origin', false );
     548    } elseif ( ! headers_sent() && 'GET' === $_SERVER['REQUEST_METHOD'] && ! is_user_logged_in() ) {
     549        header( 'Vary: Origin', false );
    548550    }
    549551
  • branches/4.9/tests/phpunit/tests/auth.php

    r39364 r46493  
    164164    }
    165165
     166    public function test_check_admin_referer_with_default_action_as_string_not_doing_it_wrong() {
     167        // A valid nonce needs to be set so the check doesn't die()
     168        $_REQUEST['_wpnonce'] = wp_create_nonce( '-1' );
     169        $result               = check_admin_referer( '-1' );
     170        $this->assertSame( 1, $result );
     171
     172        unset( $_REQUEST['_wpnonce'] );
     173    }
     174
    166175    /**
    167176     * @ticket 36361
  • branches/4.9/tests/phpunit/tests/query/vars.php

    r36048 r46493  
    1717        do_action( 'init' );
    1818
    19         $this->assertEquals( array(
     19        $this->assertEquals(
     20            array(
    2021
    21             // Static public query vars:
    22             'm',
    23             'p',
    24             'posts',
    25             'w',
    26             'cat',
    27             'withcomments',
    28             'withoutcomments',
    29             's',
    30             'search',
    31             'exact',
    32             'sentence',
    33             'calendar',
    34             'page',
    35             'paged',
    36             'more',
    37             'tb',
    38             'pb',
    39             'author',
    40             'order',
    41             'orderby',
    42             'year',
    43             'monthnum',
    44             'day',
    45             'hour',
    46             'minute',
    47             'second',
    48             'name',
    49             'category_name',
    50             'tag',
    51             'feed',
    52             'author_name',
    53             'static',
    54             'pagename',
    55             'page_id',
    56             'error',
    57             'attachment',
    58             'attachment_id',
    59             'subpost',
    60             'subpost_id',
    61             'preview',
    62             'robots',
    63             'taxonomy',
    64             'term',
    65             'cpage',
    66             'post_type',
    67             'embed',
     22                // Static public query vars:
     23                'm',
     24                'p',
     25                'posts',
     26                'w',
     27                'cat',
     28                'withcomments',
     29                'withoutcomments',
     30                's',
     31                'search',
     32                'exact',
     33                'sentence',
     34                'calendar',
     35                'page',
     36                'paged',
     37                'more',
     38                'tb',
     39                'pb',
     40                'author',
     41                'order',
     42                'orderby',
     43                'year',
     44                'monthnum',
     45                'day',
     46                'hour',
     47                'minute',
     48                'second',
     49                'name',
     50                'category_name',
     51                'tag',
     52                'feed',
     53                'author_name',
     54                'pagename',
     55                'page_id',
     56                'error',
     57                'attachment',
     58                'attachment_id',
     59                'subpost',
     60                'subpost_id',
     61                'preview',
     62                'robots',
     63                'taxonomy',
     64                'term',
     65                'cpage',
     66                'post_type',
     67                'embed',
    6868
    69             // Dynamically added public query vars:
    70             'post_format',
    71             'rest_route',
     69                // Dynamically added public query vars:
     70                'post_format',
     71                'rest_route',
    7272
    73         ), $wp->public_query_vars, 'Care should be taken when introducing new public query vars. See https://core.trac.wordpress.org/ticket/35115' );
     73            ),
     74            $wp->public_query_vars,
     75            'Care should be taken when introducing new public query vars. See https://core.trac.wordpress.org/ticket/35115'
     76        );
    7477    }
    7578
Note: See TracChangeset for help on using the changeset viewer.