WordPress.org

Make WordPress Core

Changeset 35025


Ignore:
Timestamp:
10/11/2015 11:29:55 PM (4 years ago)
Author:
jeremyfelt
Message:

MS: Reject truthy, non-numeric network ids in _network_option().

A valid $network_id or null/false is expected as the first parameter for _network_option(). If something other than that is passed, we immediately return false rather than attempting to guess what network was intended.

See #28290.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/option.php

    r35024 r35025  
    10701070    global $wpdb, $current_site;
    10711071
     1072    if ( $network_id && ! is_numeric( $network_id ) ) {
     1073        return false;
     1074    }
     1075
    10721076    $network_id = (int) $network_id;
    10731077
     
    11831187    global $wpdb, $current_site;
    11841188
     1189    if ( $network_id && ! is_numeric( $network_id ) ) {
     1190        return false;
     1191    }
     1192
    11851193    $network_id = (int) $network_id;
    11861194
     
    12881296    global $wpdb, $current_site;
    12891297
     1298    if ( $network_id && ! is_numeric( $network_id ) ) {
     1299        return false;
     1300    }
     1301
    12901302    $network_id = (int) $network_id;
    12911303
     
    13661378function update_network_option( $network_id, $option, $value ) {
    13671379    global $wpdb, $current_site;
     1380
     1381    if ( $network_id && ! is_numeric( $network_id ) ) {
     1382        return false;
     1383    }
    13681384
    13691385    $network_id = (int) $network_id;
  • trunk/tests/phpunit/tests/option/networkOption.php

    r35024 r35025  
    3939        $this->assertEquals( $value, get_network_option( $id, $option, false ) );
    4040    }
     41
     42    /**
     43     * @dataProvider data_network_id_parameter
     44     *
     45     * @param $network_id
     46     * @param $expected_response
     47     */
     48    function test_add_network_option_network_id_parameter( $network_id, $expected_response ) {
     49        $option = rand_str();
     50        $value = rand_str();
     51
     52        $this->assertEquals( $expected_response, add_network_option( $network_id, $option, $value ) );
     53    }
     54
     55    /**
     56     * @dataProvider data_network_id_parameter
     57     *
     58     * @param $network_id
     59     * @param $expected_response
     60     */
     61    function test_get_network_option_network_id_parameter( $network_id, $expected_response ) {
     62        $option = rand_str();
     63
     64        $this->assertEquals( $expected_response, get_network_option( $network_id, $option, true ) );
     65    }
     66
     67    function data_network_id_parameter() {
     68        return array(
     69            // Numeric values should always be accepted.
     70            array( 1,   true ),
     71            array( '1', true ),
     72            array( 2,   true ),
     73
     74            // Null, false, and zero will be treated as the current network.
     75            array( null,  true ),
     76            array( false, true ),
     77            array( 0,     true ),
     78            array( '0',   true ),
     79
     80            // Other truthy or string values should be rejected.
     81            array( true,     false ),
     82            array( 'string', false ),
     83        );
     84    }
    4185}
    4286
Note: See TracChangeset for help on using the changeset viewer.