Page MenuHomePhabricator

Invalid language code on Special:UserLogin leads to internal error
Closed, ResolvedPublicPRODUCTION ERROR

Description

When you login on https://www.mediawiki.org/wiki/Special:UserLogin?uselang=/ with the invalid language code / you get an internal error.

The problematic code in includes/specialpage/LoginSignupSpecialPage.php is

$code = $this->getRequest()->getVal( 'uselang', $user->getOption( 'language' ) );
$userLang = Language::factory( $code );

because Language::factory throws an exception on an invalid language code.

Expected behavior: Ignore the invalid language code or show an explicit error message.

Event Timeline

Change 441771 had a related patch set uploaded (by Fomafix; owner: Fomafix):
[mediawiki/core@master] LoginSignupSpecialPage: Fallback to $wgContLang on invalid language code

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

Vvjjkkii renamed this task from Invalid language code on Special:UserLogin leads to internal error to tdaaaaaaaa.Jul 1 2018, 1:01 AM
Vvjjkkii triaged this task as High priority.
Vvjjkkii updated the task description. (Show Details)
Vvjjkkii removed subscribers: gerritbot, Aklapper.
JJMC89 renamed this task from tdaaaaaaaa to Invalid language code on Special:UserLogin leads to internal error.Jul 1 2018, 3:00 AM
JJMC89 raised the priority of this task from High to Needs Triage.
JJMC89 updated the task description. (Show Details)
JJMC89 added a subscriber: Aklapper.

Reopened. The error still exist.

This I get after I login on https://www.mediawiki.org/wiki/Special:UserLogin?uselang=/

grafik.png (1,020×454 px, 109 KB)

Steps to reproduce:

Thanks. So the problem is as follows:

  • When presenting the log-in form, the unknown uselang value is validated and replaced with a valid one (e.g. fallback to 'en').
  • Hidden inside the form, the original unknown value is preserved.
  • When we respond to a successful log-in form submission, the unknown value is seen a second time, but this time the code forgets to validate/normalise it. Resulting in the crash!

Change 486327 had a related patch set uploaded (by D3r1ck01; owner: Derick Alangi):
[mediawiki/core@master] specialpage: Fix login crash caused by unknown language via ?uselang

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

xSavitar triaged this task as Medium priority.

Change 486693 had a related patch set uploaded (by D3r1ck01; owner: Derick Alangi):
[mediawiki/core@master] specialpage: Fix login crash caused by unknown language via ?uselang

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

Change 486327 abandoned by D3r1ck01:
specialpage: Fix login crash caused by unknown language via ?uselang

Reason:
In favor of: I825fdf

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

Change 486693 merged by jenkins-bot:
[mediawiki/core@master] specialpage: Fix login crash caused by unknown language via ?uselang

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

Change 487977 had a related patch set uploaded (by Krinkle; owner: Derick Alangi):
[mediawiki/core@REL1_32] specialpage: Fix login crash caused by unknown language via ?uselang

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

Krinkle removed a project: Patch-For-Review.

Change 441771 abandoned by Fomafix:
LoginSignupSpecialPage: Fallback to content language on invalid language code

Reason:
Superseded by 34f78a69ef058c19ecdac7290a174624ef8212ee (https://gerrit.wikimedia.org/r/486693)

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

Change 487977 merged by jenkins-bot:
[mediawiki/core@REL1_32] specialpage: Fix login crash caused by unknown language via ?uselang

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

mmodell changed the subtype of this task from "Task" to "Production Error".Aug 28 2019, 11:09 PM