From 31b7f3ec3f6297d43099dccf2e3c902f1f9f8e9e Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Sat, 9 Feb 2013 20:22:52 +0100 Subject: [PATCH] Validate the user name used by DoubleRedirectJob So that invalid user names (IP address, invalid characters, etc.) are still rejected. This also makes the usage of User::newFromName() consistent with the ones used by other scripts that uses their own user name. Change-Id: I0dd28e53dc30433691b88d80b6655e3171d0cdfd --- includes/job/jobs/DoubleRedirectJob.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/includes/job/jobs/DoubleRedirectJob.php b/includes/job/jobs/DoubleRedirectJob.php index 3cb589408d..6158a67c94 100644 --- a/includes/job/jobs/DoubleRedirectJob.php +++ b/includes/job/jobs/DoubleRedirectJob.php @@ -131,15 +131,21 @@ class DoubleRedirectJob extends Job { return false; } + $user = $this->getUser(); + if ( !$user ) { + $this->setLastError( 'Invalid user' ); + return false; + } + # Save it global $wgUser; $oldUser = $wgUser; - $wgUser = $this->getUser(); + $wgUser = $user; $article = WikiPage::factory( $this->title ); $reason = wfMessage( 'double-redirect-fixed-' . $this->reason, $this->redirTitle->getPrefixedText(), $newTitle->getPrefixedText() )->inContentLanguage()->text(); - $article->doEditContent( $newContent, $reason, EDIT_UPDATE | EDIT_SUPPRESS_RC, false, $this->getUser() ); + $article->doEditContent( $newContent, $reason, EDIT_UPDATE | EDIT_SUPPRESS_RC, false, $user ); $wgUser = $oldUser; return true; @@ -194,13 +200,16 @@ class DoubleRedirectJob extends Job { /** * Get a user object for doing edits, from a request-lifetime cache - * @return User + * False will be returned if the user name specified in the + * 'double-redirect-fixer' message is invalid. + * + * @return User|bool */ function getUser() { if ( !self::$user ) { - self::$user = User::newFromName( wfMessage( 'double-redirect-fixer' )->inContentLanguage()->text(), false ); - # FIXME: newFromName could return false on a badly configured wiki. - if ( !self::$user->isLoggedIn() ) { + self::$user = User::newFromName( wfMessage( 'double-redirect-fixer' )->inContentLanguage()->text() ); + # User::newFromName() can return false on a badly configured wiki. + if ( self::$user && !self::$user->isLoggedIn() ) { self::$user->addToDatabase(); } } -- 2.20.1