WordPress.org

Make WordPress Core

Ticket #29060: 29060.diff

File 29060.diff, 1.1 KB (added by mdawaffe, 7 years ago)
  • src/wp-login.php

     
    568568                exit;
    569569        }
    570570
    571         list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
     571        if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) {
     572                list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
    572573
    573         $user = check_password_reset_key( $rp_key, $rp_login );
     574                $user = check_password_reset_key( $rp_key, $rp_login );
     575        } else {
     576                $user = false;
     577        }
    574578
    575         if ( is_wp_error($user) ) {
     579        if ( ! $user || is_wp_error( $user ) ) {
    576580                setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
    577                 if ( $user->get_error_code() === 'expired_key' )
     581                if ( $user && $user->get_error_code() === 'expired_key' )
    578582                        wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
    579583                else
    580584                        wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) );