Make WordPress Core

Ticket #38744: 38744.2.diff

File 38744.2.diff, 3.5 KB (added by cafenoirdesign, 5 years ago)
  • src/wp-admin/includes/user.php

    diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php
    index e4af0548d9..20fbcd851f 100644
    a b function edit_user( $user_id = 0 ) { 
    4141        }
    4242
    4343        if ( ! $update && isset( $_POST['user_login'] ) ) {
    44                 $user->user_login = sanitize_user( $_POST['user_login'], true );
     44                $user->user_login = sanitize_user( wp_unslash( $_POST['user_login'] ), true );
    4545        }
    4646
    4747        $pass1 = '';
  • src/wp-includes/user.php

    diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php
    index 505048e57a..44b802b5fa 100644
    a b function wp_signon( $credentials = array(), $secure_cookie = '' ) { 
    3535                $credentials = array(); // Back-compat for plugins passing an empty string.
    3636
    3737                if ( ! empty( $_POST['log'] ) ) {
    38                         $credentials['user_login'] = $_POST['log'];
     38                        $credentials['user_login'] = wp_unslash( $_POST['log'] );
    3939                }
    4040                if ( ! empty( $_POST['pwd'] ) ) {
    4141                        $credentials['user_password'] = $_POST['pwd'];
  • src/wp-login.php

    diff --git a/src/wp-login.php b/src/wp-login.php
    index ee0e212e2c..ff70d59492 100644
    a b switch ( $action ) { 
    10321032
    10331033                if ( $http_post ) {
    10341034                        if ( isset( $_POST['user_login'] ) && is_string( $_POST['user_login'] ) ) {
    1035                                 $user_login = $_POST['user_login'];
     1035                                $user_login = wp_unslash( $_POST['user_login'] );
    10361036                        }
    10371037
    10381038                        if ( isset( $_POST['user_email'] ) && is_string( $_POST['user_email'] ) ) {
    switch ( $action ) { 
    11501150
    11511151                // If the user wants SSL but the session is not SSL, force a secure cookie.
    11521152                if ( ! empty( $_POST['log'] ) && ! force_ssl_admin() ) {
    1153                         $user_name = sanitize_user( $_POST['log'] );
     1153                        $user_name = sanitize_user( wp_unslash( $_POST['log'] ) );
    11541154                        $user      = get_user_by( 'login', $user_name );
    11551155
    11561156                        if ( ! $user && strpos( $user_name, '@' ) ) {
  • tests/phpunit/tests/user.php

    diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php
    index d90793958b..19a688f653 100644
    a b class Tests_User extends WP_UnitTestCase { 
    3535                );
    3636                self::$user_ids[] = self::$contrib_id;
    3737
     38                self::$user_ids[] = $factory->user->create(
     39                        array(
     40                                'user_login'    => "testemailaddress'@test.com",
     41                                'user_nicename' => 'user_email_with_apostrophe',
     42                                'user_pass'     => 'password',
     43                                'first_name'    => 'John',
     44                                'last_name'     => 'Doe',
     45                                'display_name'  => 'John Doe',
     46                                'user_email'    => "testemailaddress'@test.com",
     47                                'user_url'      => 'http://tacos.com',
     48                                'role'          => 'contributor',
     49                                'nickname'      => 'Johnny',
     50                                'description'   => 'I am a WordPress user that cares about privacy.',
     51                        )
     52                );
     53
    3854                self::$author_id  = $factory->user->create(
    3955                        array(
    4056                                'user_login' => 'author_login',
    class Tests_User extends WP_UnitTestCase { 
    6581                $this->author = clone self::$_author;
    6682        }
    6783
     84        public function test_that_you_can_login_with_an_email_that_has_apostrophe() {
     85
     86                //create the user with an email that has an apostrophe (see test setup)
     87
     88                //login as the user
     89                $credentials = [
     90                        'user_login'    => "testemailaddress'@test.com",
     91                        'user_password' => 'password',
     92                ];
     93
     94                //attempt to login
     95                $user = wp_signon( $credentials );
     96
     97                //assert that login was successfull
     98                //if the login fails, an instance of WP_Error is returned rather than User object
     99                $this->assertNotWPError( $user );
     100        }
     101
    68102        function test_get_users_of_blog() {
    69103                // add one of each user role
    70104                $nusers = array(