From 9702c51352df215bfb6800fd9858f4c449ed0c7c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 25 Feb 2014 02:31:07 +0100 Subject: [PATCH] SpecialUserlogin: Normalize username before passing to User::newFromName That method does some rather strict checking which is not desired here. Bug: 29621 Change-Id: I983e3f528491817f9f31f71a92d8d2946ce5941d --- includes/specials/SpecialUserlogin.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php index eca1839864..7e4bfa844d 100644 --- a/includes/specials/SpecialUserlogin.php +++ b/includes/specials/SpecialUserlogin.php @@ -400,9 +400,15 @@ class LoginForm extends SpecialPage { return Status::newFatal( 'sorbs_create_account_reason' ); } + // Normalize the name so that silly things don't cause "invalid username" errors. + // User::newFromName does some rather strict checking, rejecting e.g. leading/trailing/multiple spaces. + $title = Title::makeTitleSafe( NS_USER, $this->mUsername ); + if ( !is_object( $title ) ) { + return Status::newFatal( 'noname' ); + } + # Now create a dummy user ($u) and check if it is valid - $name = trim( $this->mUsername ); - $u = User::newFromName( $name, 'creatable' ); + $u = User::newFromName( $title->getText(), 'creatable' ); if ( !is_object( $u ) ) { return Status::newFatal( 'noname' ); } elseif ( 0 != $u->idForName() ) { -- 2.20.1