WordPress.org

Make WordPress Core

Ticket #21570: 21570.diff

File 21570.diff, 1.5 KB (added by mdawaffe, 3 years ago)
  • wp-includes/ms-functions.php

     
    384384 */ 
    385385function is_email_address_unsafe( $user_email ) { 
    386386        $banned_names = get_site_option( 'banned_email_domains' ); 
    387         if ($banned_names && !is_array( $banned_names )) 
    388                 $banned_names = explode( "\n", $banned_names); 
     387        if ( $banned_names && !is_array( $banned_names ) ) 
     388                $banned_names = explode( "\n", $banned_names ); 
    389389 
    390         if ( is_array( $banned_names ) && empty( $banned_names ) == false ) { 
    391                 $email_domain = strtolower( substr( $user_email, 1 + strpos( $user_email, '@' ) ) ); 
     390        $is_email_address_unsafe = false; 
     391 
     392        if ( is_array( $banned_names ) && $banned_names ) { 
     393                list( $email_local_part, $email_domain ) = explode( '@', $user_email ); 
     394 
    392395                foreach ( (array) $banned_names as $banned_domain ) { 
    393                         if ( $banned_domain == '' ) 
     396                        if ( !$banned_domain ) { 
    394397                                continue; 
     398                        } 
     399 
    395400                        if ( 
    396                                 strstr( $email_domain, $banned_domain ) || 
    397                                 ( 
    398                                         strstr( $banned_domain, '/' ) && 
    399                                         preg_match( $banned_domain, $email_domain ) 
    400                                 ) 
    401                         ) 
    402                         return true; 
     401                                $email_domain == $banned_domain 
     402                        || 
     403                                false !== strpos( $user_email, ".$banned_domain" ) 
     404                        ) { 
     405                                $is_email_address_unsafe = true; 
     406                                break; 
     407                        } 
    403408                } 
    404409        } 
    405         return false; 
     410 
     411        return apply_filters( 'is_email_address_unsafe', $is_email_address_unsafe, $user_email ); 
    406412} 
    407413 
    408414/**