(bug 26854) Invalid user names go unchecked. Applied most of the patch submitted...
authorRoan Kattouw <catrope@users.mediawiki.org>
Sun, 20 Nov 2011 10:55:58 +0000 (10:55 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Sun, 20 Nov 2011 10:55:58 +0000 (10:55 +0000)
17 files changed:
CREDITS
includes/Article.php
includes/EditPage.php
includes/Skin.php
includes/WikiPage.php
includes/api/ApiBase.php
includes/job/DoubleRedirectJob.php
includes/job/EnotifNotifyJob.php
includes/specials/SpecialBlockme.php
maintenance/changePassword.php
maintenance/cleanupSpam.php
maintenance/deleteBatch.php
maintenance/deleteDefaultMessages.php
maintenance/moveBatch.php
maintenance/protect.php
maintenance/reassignEdits.php
maintenance/undelete.php

diff --git a/CREDITS b/CREDITS
index 3fa6e1d..437ccd7 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -163,6 +163,7 @@ following names for their contribution to the product.
 * Scott Colcord
 * Simon Walker
 * Solitarius
+* Søren Løvborg
 * Stefano Codari
 * Str4nd
 * svip
index 0b5f7d0..6901165 100644 (file)
@@ -928,7 +928,7 @@ class Article extends Page {
                        $user = User::newFromName( $rootPart, false /* allow IP users*/ );
                        $ip = User::isIP( $rootPart );
 
-                       if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
+                       if ( !($user && $user->isLoggedIn()) && !$ip ) { # User does not exist
                                $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
                                        array( 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ) );
                        } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
index cad6503..0537406 100644 (file)
@@ -1475,7 +1475,7 @@ class EditPage {
                        $username = $parts[0];
                        $user = User::newFromName( $username, false /* allow IP users*/ );
                        $ip = User::isIP( $username );
-                       if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
+                       if ( !($user && $user->isLoggedIn()) && !$ip ) { # User does not exist
                                $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
                                        array( 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ) );
                        } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
index 43176f2..26de63c 100644 (file)
@@ -269,7 +269,7 @@ abstract class Skin extends ContextSource {
                                $this->mRelevantUser = User::newFromName( $rootUser, false );
                        } else {
                                $user = User::newFromName( $rootUser, false );
-                               if ( $user->isLoggedIn() ) {
+                               if ( $user && $user->isLoggedIn() ) {
                                        $this->mRelevantUser = $user;
                                }
                        }
index fff85ce..8bfc4e1 100644 (file)
@@ -2322,7 +2322,9 @@ class WikiPage extends Page {
                # User talk pages
                if ( $title->getNamespace() == NS_USER_TALK ) {
                        $user = User::newFromName( $title->getText(), false );
-                       $user->setNewtalk( false );
+                       if ( $user ) {
+                               $user->setNewtalk( false );
+                       }
                }
 
                # Image redirects
index 2627b35..3613a6c 100644 (file)
@@ -1301,7 +1301,7 @@ abstract class ApiBase extends ContextSource {
        public function getWatchlistUser( $params ) {
                if ( !is_null( $params['owner'] ) && !is_null( $params['token'] ) ) {
                        $user = User::newFromName( $params['owner'], false );
-                       if ( !$user->getId() ) {
+                       if ( !($user && $user->getId()) ) {
                                $this->dieUsage( 'Specified user does not exist', 'bad_wlowner' );
                        }
                        $token = $user->getOption( 'watchlisttoken' );
index f991883..2b7cd7c 100644 (file)
@@ -180,6 +180,7 @@ class DoubleRedirectJob extends Job {
        function getUser() {
                if ( !self::$user ) {
                        self::$user = User::newFromName( wfMsgForContent( 'double-redirect-fixer' ), false );
+                       # FIXME: newFromName could return false on a badly configured wiki.
                        if ( !self::$user->isLoggedIn() ) {
                                self::$user->addToDatabase();
                        }
index 8545043..eb154ec 100644 (file)
@@ -24,6 +24,7 @@ class EnotifNotifyJob extends Job {
                        $editor = User::newFromId( $this->params['editorID'] );
                // B/C, only the name might be given.
                } else {
+                       # FIXME: newFromName could return false on a badly configured wiki.
                        $editor = User::newFromName( $this->params['editor'], false );
                }
                $enotif->actuallyNotifyOnPageChange(
index 95f92f4..ebfe07e 100644 (file)
@@ -45,6 +45,7 @@ class SpecialBlockme extends UnlistedSpecialPage {
                }
 
                $user = User::newFromName( wfMsgForContent( 'proxyblocker' ) );
+               # FIXME: newFromName could return false on a badly configured wiki.
                if ( !$user->isLoggedIn() ) {
                        $user->addToDatabase();
                }
index ef87dfb..cfcac40 100644 (file)
@@ -43,7 +43,7 @@ class ChangePassword extends Maintenance {
                } else {
                        $this->error( "A \"user\" or \"userid\" must be set to change the password for" , true );
                }
-               if ( !$user->getId() ) {
+               if ( !$user || !$user->getId() ) {
                        $this->error( "No such user: " . $this->getOption( 'user' ), true );
                }
                try {
index 8561281..b11a8f3 100644 (file)
@@ -36,6 +36,9 @@ class CleanupSpam extends Maintenance {
 
                $username = wfMsg( 'spambot_username' );
                $wgUser = User::newFromName( $username );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
                // Create the user if necessary
                if ( !$wgUser->getId() ) {
                        $wgUser->addToDatabase();
index 14db164..2b0026d 100644 (file)
@@ -63,6 +63,9 @@ class DeleteBatch extends Maintenance {
                        $this->error( "Unable to read file, exiting", true );
                }
                $wgUser = User::newFromName( $user );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
                $dbw = wfGetDB( DB_MASTER );
 
                # Handle each entry
index a33921b..5093871 100644 (file)
@@ -56,6 +56,9 @@ class DeleteDefaultMessages extends Maintenance {
                # in order to hide it in RecentChanges.
                global $wgUser;
                $wgUser = User::newFromName( $user );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
                $wgUser->addGroup( 'bot' );
 
                # Handle deletion
index 9b9f910..6ecc775 100644 (file)
@@ -67,6 +67,9 @@ class MoveBatch extends Maintenance {
                        $this->error( "Unable to read file, exiting", true );
                }
                $wgUser = User::newFromName( $user );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
 
                # Setup complete, now start
                $dbw = wfGetDB( DB_MASTER );
index aab84d6..c304396 100644 (file)
@@ -47,6 +47,10 @@ class Protect extends Maintenance {
                }
 
                $wgUser = User::newFromName( $userName );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
+               
                $restrictions = array( 'edit' => $protection, 'move' => $protection );
 
                $t = Title::newFromText( $this->getArg() );
index 20de17e..3830fe3 100644 (file)
@@ -160,6 +160,9 @@ class ReassignEdits extends Maintenance {
                        $user->setName( $username );
                } else {
                        $user = User::newFromName( $username );
+                       if ( !$user ) {
+                               $this->error( "Invalid username", true );
+                       }
                }
                $user->load();
                return $user;
index 7213d09..1c3b14a 100644 (file)
@@ -44,6 +44,9 @@ class Undelete extends Maintenance {
                        $this->error( "Invalid title", true );
                }
                $wgUser = User::newFromName( $user );
+               if ( !$wgUser ) {
+                       $this->error( "Invalid username", true );
+               }
                $archive = new PageArchive( $title );
                $this->output( "Undeleting " . $title->getPrefixedDBkey() . '...' );
                $archive->undelete( array(), $reason );