From 151e3890152889b85c712ff7912b74897a0428e9 Mon Sep 17 00:00:00 2001
From: Brian Wolff <bawolff+wn@gmail.com>
Date: Mon, 14 Mar 2016 00:18:07 -0400
Subject: [PATCH] SECURITY: Replace strip markers before syntax highlighting

The raw strip markers can't be syntax highlighted properly anyhow.

Bug: T51256, T110143, T78456
---
 SyntaxHighlight_GeSHi.class.php | 5 ++++-
 tests/parserTests.txt           | 9 +++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/SyntaxHighlight_GeSHi.class.php b/SyntaxHighlight_GeSHi.class.php
index 29420c8..5631972 100644
--- a/SyntaxHighlight_GeSHi.class.php
+++ b/SyntaxHighlight_GeSHi.class.php
@@ -108,8 +108,11 @@ class SyntaxHighlight_GeSHi {
 	public static function parserHook( $text, $args = array(), $parser ) {
 		global $wgUseTidy;
 
+		// Replace strip markers (For e.g. {{#tag:syntaxhighlight|<nowiki>...}})
+		$out = $parser->mStripState->unstripNoWiki( $text );
+
 		// Don't trim leading spaces away, just the linefeeds
-		$out = preg_replace( '/^\n+/', '', rtrim( $text ) );
+		$out = preg_replace( '/^\n+/', '', rtrim( $out ) );
 
 		// Convert deprecated attributes
 		if ( isset( $args['enclose'] ) ) {
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index c6aaa9a..5d5038c 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -154,3 +154,12 @@ Text <source lang="javascript" enclose="none">var a;</source>.
 <p>Text <code class="mw-highlight" dir="ltr"><span class="kd">var</span> <span class="nx">a</span><span class="p">;</span></code>.
 </p>
 !! end
+
+!! test
+Enclose with nowiki
+!! input
+{{#tag:syntaxhighlight|<nowiki>foo</nowiki>|lang="text"|inline=none}}
+!! result
+<p><code class="mw-highlight" dir="ltr">foo</code>
+</p>
+!! end
-- 
2.0.1

