WordPress.org

Make WordPress Core

Ticket #21570: 21570.diff

File 21570.diff, 1.5 KB (added by mdawaffe, 6 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/**