Page MenuHomePhabricator

Saving preferences with returning "false" from allowRealNameChange() in AuthPlugin.php causing "Undefined index: realname"
Closed, ResolvedPublic

Description

Author: fx-eckart

Description:
If a sysop doesn't want a user can change his realname (because its set by extend authPlugin) and adds a allowRealNameChange(), which returns false, to the AuthPlugin.php, you get a php notice "Undefined index: realname in Preferences.php line 1439".

If allowPropChange() or allowRealNameChange() from AuthPlugin.php return false then there is a missing key 'realname' in $formData.
This causes the mentioned warning and an empty realname string for the user.
This should either be checked before saving or the index should include the old realname by default.

Workaround for me: Edit Preferences.php like this:

Preferences.php line 1436
Fortunately, the realname field is MUCH simpler
(not really "private", but still shouldn't be edited without permission)

if ( !in_array( 'realname', $wgHiddenPrefs ) && $user->isAllowed( 'editmyprivateinfo' ) ) {
  if (!array_key_exists('realname', $formData)) {
    $formData['realname'] = $user->getRealname();
  }

  $realName = $formData['realname'];
  $user->setRealName( $realName );
}

Message in error.log:
PHP Notice: Undefined index: realname in /srv/web/wiki.xxxxxx.org/public/mediawiki-1.22.2/includes/Preferences.php on line 1439, referer: http://wiki.xxxxxx.org/wiki/Spezial:Einstellungen


Version: 1.22.2
Severity: normal

Details

Reference
bz62029

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 3:02 AM
bzimport set Reference to bz62029.
bzimport added a subscriber: Unknown Object (MLST).

fx-eckart: Thanks for taking the time to report this!
Would you be willing to turn the code snippet into a patch?
You are welcome to use Developer access

https://www.mediawiki.org/wiki/Developer_access

to submit this as a Git branch directly into Gerrit:

https://www.mediawiki.org/wiki/Git/Tutorial

fx-eckart wrote:

let me figure out first how the creepy git/gerrit works on wikimedia ;)

Change 116282 had a related patch set uploaded by GBT248:
Preferences.php: avoid "Undefined index" if key 'realname' don't exist in $formdata Added additional check for missing key "realname" in $formData which can cause an undefined index: realname (see bug 62029 fo details)

https://gerrit.wikimedia.org/r/116282

Change 116282 had a related patch set uploaded by Alex Monk:
Preferences.php: avoid "Undefined index" if key 'realname' don't exist in $formdata

https://gerrit.wikimedia.org/r/116282

fx-eckart wrote:

New patch set uploaded 12h ago (
don't know why it hasn't announced here by gerrit):

https://gerrit.wikimedia.org/r/116282

(In reply to Kai from comment #5)

don't know why it hasn't announced here by gerrit):

because it shouldn't.

Change 116282 merged by jenkins-bot:
Preferences.php: avoid "Undefined index" if key 'realname' don't exist in $formdata

https://gerrit.wikimedia.org/r/116282