Do not accept invalid codes for setlang
Related to bug 37459, but this is not about uselang. Change-Id: Icfa371d25697ee01c6bc262de968cfd2a1543154
This commit is contained in:
@@ -69,12 +69,18 @@ class UniversalLanguageSelectorHooks {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function getLanguage( $user, &$code ) {
|
public static function getLanguage( $user, &$code ) {
|
||||||
global $wgRequest;
|
global $wgRequest, $wgLanguageCode;
|
||||||
if ( $wgRequest->getVal( 'uselang' ) ) {
|
if ( $wgRequest->getVal( 'uselang' ) ) {
|
||||||
// uselang can be used for temporary override of language preference
|
// uselang can be used for temporary override of language preference
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$setlang = $wgRequest->getVal( 'setlang' );
|
$setlang = $wgRequest->getVal( 'setlang' );
|
||||||
|
$setlang = RequestContext::sanitizeLangCode( $setlang );
|
||||||
|
$validMWLanguages = Language::fetchLanguageNames( $wgLanguageCode, null, 'mwfile' );
|
||||||
|
if ( !array_key_exists( $setlang, $validLanguages ) ) {
|
||||||
|
wfDebug( "Invalid user language code\n" );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if ( $setlang ) {
|
if ( $setlang ) {
|
||||||
if ( $user->isAnon() ) {
|
if ( $user->isAnon() ) {
|
||||||
$wgRequest->response()->setcookie( 'language', $setlang );
|
$wgRequest->response()->setcookie( 'language', $setlang );
|
||||||
@@ -90,7 +96,6 @@ class UniversalLanguageSelectorHooks {
|
|||||||
$code = $user->getOption( 'language' );
|
$code = $user->getOption( 'language' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$code = RequestContext::sanitizeLangCode( $code );
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +106,7 @@ class UniversalLanguageSelectorHooks {
|
|||||||
*/
|
*/
|
||||||
public static function addConfig( &$vars ) {
|
public static function addConfig( &$vars ) {
|
||||||
global $wgContLang;
|
global $wgContLang;
|
||||||
$vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode() );
|
$vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode(), null, 'mwfile' );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user