From a7a693f4b086cbe31afa8508c1cc044242fb7bb8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Tue, 11 Jun 2013 16:42:10 +0000 Subject: [PATCH] Avoid exceptions by first checking language code validity Bug: 49423 Change-Id: I3fd98ba08393856311a48fa40769027460c72ef9 --- languages/Language.php | 6 ++++++ tests/phpunit/languages/LanguageTest.php | 1 + 2 files changed, 7 insertions(+) diff --git a/languages/Language.php b/languages/Language.php index 92ea75c814..00f654b9e7 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -385,6 +385,12 @@ class Language { public static function isKnownLanguageTag( $tag ) { static $coreLanguageNames; + // Quick escape for invalid input to avoid exceptions down the line + // when code tries to process tags which are not valid at all. + if ( !self::isValidBuiltInCode( $tag ) ) { + return false; + } + if ( $coreLanguageNames === null ) { include MWInit::compiledPath( 'languages/Names.php' ); } diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index d687dbbd93..42be936484 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -494,6 +494,7 @@ class LanguageTest extends LanguageClassesTestCase { public static function provideUnknownLanguageTags() { return array( array( 'mw', 'non-existent two-letter code' ), + array( 'foo"