Umherirrender has uploaded a new change for review.

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


Change subject: Make a single colon a invalid title in php and js
......................................................................

Make a single colon a invalid title in php and js

When secureAndSplit will get a single colon as title, the leading colon
is stripped and produces a title with a empty string, make this
impossible by moving the empty string check after the substring of the
colon.

Bug: 54044
Change-Id: I574168c9ed281c535901c36dea7c179a4e794d20
---
M includes/Title.php
M resources/mediawiki/mediawiki.Title.js
M tests/phpunit/includes/TitleTest.php
M tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
4 files changed, 12 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/74/99674/1

diff --git a/includes/Title.php b/includes/Title.php
index 820842f..a949ac3 100644
--- a/includes/Title.php
+++ b/includes/Title.php
@@ -3163,10 +3163,6 @@
                $dbkey = preg_replace( '/[ 
_\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u',
 '_', $dbkey );
                $dbkey = trim( $dbkey, '_' );
 
-               if ( $dbkey == '' ) {
-                       return false;
-               }
-
                if ( strpos( $dbkey, UTF8_REPLACEMENT ) !== false ) {
                        # Contained illegal UTF-8 sequences or forbidden 
Unicode chars.
                        return false;
@@ -3176,12 +3172,16 @@
 
                # Initial colon indicates main namespace rather than specified 
default
                # but should not create invalid {ns,title} pairs such as 
{0,Project:Foo}
-               if ( ':' == $dbkey[0] ) {
+               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
                        $this->mNamespace = NS_MAIN;
                        $dbkey = substr( $dbkey, 1 ); # remove the colon but 
continue processing
                        $dbkey = trim( $dbkey, '_' ); # remove any subsequent 
whitespace
                }
 
+               if ( $dbkey == '' ) {
+                       return false;
+               }
+
                # Namespace or interwiki prefix
                $firstPass = true;
                $prefixRegexp = "/^(.+?)_*:_*(.*)$/S";
diff --git a/resources/mediawiki/mediawiki.Title.js 
b/resources/mediawiki/mediawiki.Title.js
index de2d013..51770fd 100644
--- a/resources/mediawiki/mediawiki.Title.js
+++ b/resources/mediawiki/mediawiki.Title.js
@@ -126,12 +126,8 @@
                        // Trim underscores
                        .replace( rUnderscoreTrim, '' );
 
-               if ( title === '' ) {
-                       return false;
-               }
-
                // Process initial colon
-               if ( title.charAt( 0 ) === ':' ) {
+               if ( title !== '' && title.charAt( 0 ) === ':' ) {
                        // Initial colon means main namespace instead of 
specified default
                        namespace = NS_MAIN;
                        title = title
@@ -141,6 +137,10 @@
                                .replace( rUnderscoreTrim, '' );
                }
 
+               if ( title === '' ) {
+                       return false;
+               }
+
                // Process namespace prefix (if any)
                m = title.match( rSplit );
                if ( m ) {
diff --git a/tests/phpunit/includes/TitleTest.php 
b/tests/phpunit/includes/TitleTest.php
index 6bfe545..58f0146 100644
--- a/tests/phpunit/includes/TitleTest.php
+++ b/tests/phpunit/includes/TitleTest.php
@@ -66,6 +66,7 @@
                // Invalid
                foreach ( array(
                        '',
+                       ':',
                        '__  __',
                        '  __  ',
                        // Bad characters forbidden regardless of 
wgLegalTitleChars
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js 
b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
index cb0bf69..4083564 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
@@ -80,6 +80,7 @@
                ],
                invalid: [
                        '',
+                       ':',
                        '__  __',
                        '  __  ',
                        // Bad characters forbidden regardless of 
wgLegalTitleChars

-- 
To view, visit https://gerrit.wikimedia.org/r/99674
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I574168c9ed281c535901c36dea7c179a4e794d20
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Umherirrender <umherirrender_de...@web.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to