Merge "(bug 37587) Enforce language codes to be html safe"
authorSiebrand <siebrand@wikimedia.org>
Fri, 13 Jul 2012 19:47:33 +0000 (19:47 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 13 Jul 2012 19:47:33 +0000 (19:47 +0000)
1  2 
languages/Language.php

diff --combined languages/Language.php
@@@ -246,7 -246,11 +246,11 @@@ class Language 
         */
        public static function isValidCode( $code ) {
                return
-                       strcspn( $code, ":/\\\000" ) === strlen( $code )
+                       // People think language codes are html safe, so enforce it.
+                       // Ideally we should only allow a-zA-Z0-9-
+                       // but, .+ and other chars are often used for {{int:}} hacks
+                       // see bugs 37564, 37587, 36938
+                       strcspn( $code, ":/\\\000&<>'\"" ) === strlen( $code )
                        && !preg_match( Title::getTitleInvalidRegex(), $code );
        }
  
        /**
         * Decode an expiry (block, protection, etc) which has come from the DB
         *
 -       * @FIXME: why are we returnings DBMS-dependent strings???
 +       * @todo FIXME: why are we returnings DBMS-dependent strings???
         *
         * @param $expiry String: Database expiry String
         * @param $format Bool|Int true to process using language functions, or TS_ constant