diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php index 3a11fa10bf..81944eda0e 100644 --- a/src/wp-includes/user.php +++ b/src/wp-includes/user.php @@ -2043,6 +2043,10 @@ function wp_insert_user( $userdata ) { */ $user_url = apply_filters( 'pre_user_url', $raw_user_url ); + if ( mb_strlen( $user_url ) > 100 ) { + return new WP_Error( 'user_url_too_long', __( 'User URL may not be longer than 100 characters.' ) ); + } + $user_registered = empty( $userdata['user_registered'] ) ? gmdate( 'Y-m-d H:i:s' ) : $userdata['user_registered']; $user_activation_key = empty( $userdata['user_activation_key'] ) ? '' : $userdata['user_activation_key']; diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php index 8c4c0d199e..67ab0f04f7 100644 --- a/tests/phpunit/tests/user.php +++ b/tests/phpunit/tests/user.php @@ -1000,6 +1000,24 @@ class Tests_User extends WP_UnitTestCase { $this->assertSame( $expected, $user->user_nicename ); } + /** + * @ticket 44107 + */ + public function test_wp_insert_user_should_reject_user_url_over_100_characters() { + $user_url = str_repeat( 'a', 101 ); + $u = wp_insert_user( + array( + 'user_login' => 'test', + 'user_email' => 'test@example.com', + 'user_pass' => 'password', + 'user_url' => $user_url, + ) + ); + + $this->assertWPError( $u ); + $this->assertSame( 'user_url_too_long', $u->get_error_code() ); + } + /** * @ticket 28004 */