From 4910a61046ce323fd4dde0cb9edbb4ed5a457a9d Mon Sep 17 00:00:00 2001 From: Catrope Date: Wed, 9 May 2012 14:10:33 -0700 Subject: [PATCH] Factor out module name validation into a static function Also add the requirement that module names be at most 255 bytes, so they'll fit in the DB fields that we put module names in (md_module, mr_resource, mrl_resource) Change-Id: I7193c9beb7aff4eabfe20db461e6f9032ae994b1 --- includes/resourceloader/ResourceLoader.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 71e68d1ef2..42fd8734e8 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -241,9 +241,9 @@ class ResourceLoader { ); } - // Check $name for illegal characters - if ( preg_match( '/[|,!]/', $name ) ) { - throw new MWException( "ResourceLoader module name '$name' is invalid. Names may not contain pipes (|), commas (,) or exclamation marks (!)" ); + // Check $name for validity + if ( !self::isValidModuleName( $name ) ) { + throw new MWException( "ResourceLoader module name '$name' is invalid, see ResourceLoader::isValidModuleName()" ); } // Attach module @@ -1099,4 +1099,17 @@ class ResourceLoader { ksort( $query ); return $query; } + + /** + * Check a module name for validity. + * + * Module names may not contain pipes (|), commas (,) or exclamation marks (!) and can be + * at most 255 bytes. + * + * @param $moduleName string Module name to check + * @return bool Whether $moduleName is a valid module name + */ + public static function isValidModuleName( $moduleName ) { + return !preg_match( '/[|,!]/', $moduleName ) && strlen( $moduleName ) <= 255; + } } -- 2.20.1