Make WordPress Core


Ignore:
Timestamp:
09/11/2015 02:24:03 AM (10 years ago)
Author:
boonebgorges
Message:

Require numeric IDs in user deletion functions.

wp_delete_user() and wpmu_delete_user() both require an $id parameter.
Previously, the functions did not verify that the value passed was, in fact,
a number. As such, passing an object or any other entity that would be cast
to int 1 would result in user 1 being deleted. We fix this by enforcing
the requirement that $id be numeric.

Props dipesh.kakadiya, utkarshpatel, juliobox.
Fixes #33800.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/user/multisite.php

    r33771 r34034  
    345345    }
    346346
     347    public function test_numeric_string_user_id() {
     348        $u = $this->factory->user->create();
     349
     350        $u_string = (string) $u;
     351        $this->assertTrue( wpmu_delete_user( $u_string ) );
     352        $this->assertFalse( get_user_by( 'id', $u ) );
     353    }
     354
     355    /**
     356     * @ticket 33800
     357     */
     358    public function test_should_return_false_for_non_numeric_string_user_id() {
     359        $this->assertFalse( wpmu_delete_user( 'abcde' ) );
     360    }
     361
     362    /**
     363     * @ticket 33800
     364     */
     365    public function test_should_return_false_for_object_user_id() {
     366        $u_obj = $this->factory->user->create_and_get();
     367        $this->assertFalse( wpmu_delete_user( $u_obj ) );
     368        $this->assertEquals( $u_obj->ID, username_exists( $u_obj->user_login ) );
     369    }
    347370}
    348371
Note: See TracChangeset for help on using the changeset viewer.