diff --git a/lib/mustache/readme_moodle.txt b/lib/mustache/readme_moodle.txt
index 1c187bd371d..62b6c18005b 100644
--- a/lib/mustache/readme_moodle.txt
+++ b/lib/mustache/readme_moodle.txt
@@ -19,4 +19,10 @@ been already applied upstream for the release being used, can be removed
from the list. If still not available upstream, they will need to be re-applied.
1) If the relevant pull request has not been accepted yet, apply the following commit, so we are able to disable unnecessary rendering:
- https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df#
+https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df#
+This can be achieved by:
+ a) Download the patch from
+ https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df.patch
+ b) In terminal, navigate to lib/mustache/src/Mustache
+ c) Run the following: patch --directory . < ~/path/to/patch.patch
+ d) We do not need the unit test, so run rm DisableLambdaRenderingTest.php
\ No newline at end of file
diff --git a/lib/mustache/src/Mustache/Engine.php b/lib/mustache/src/Mustache/Engine.php
index 8e8bc1010e5..0d3b7218552 100644
--- a/lib/mustache/src/Mustache/Engine.php
+++ b/lib/mustache/src/Mustache/Engine.php
@@ -23,7 +23,7 @@
*/
class Mustache_Engine
{
- const VERSION = '2.14.1';
+ const VERSION = '2.14.2';
const SPEC_VERSION = '1.2.2';
const PRAGMA_FILTERS = 'FILTERS';
diff --git a/lib/mustache/src/Mustache/Tokenizer.php b/lib/mustache/src/Mustache/Tokenizer.php
index 2a172c34864..e59d30bd029 100644
--- a/lib/mustache/src/Mustache/Tokenizer.php
+++ b/lib/mustache/src/Mustache/Tokenizer.php
@@ -215,6 +215,10 @@ class Mustache_Tokenizer
}
}
+ if ($this->state !== self::IN_TEXT) {
+ $this->throwUnclosedTagException();
+ }
+
$this->flushBuffer();
// Restore the user's encoding...
@@ -279,6 +283,10 @@ class Mustache_Tokenizer
$close = '=' . $this->ctag;
$closeIndex = strpos($text, $close, $index);
+ if ($closeIndex === false) {
+ $this->throwUnclosedTagException();
+ }
+
$token = array(
self::TYPE => self::T_DELIM_CHANGE,
self::LINE => $this->line,
@@ -333,6 +341,10 @@ class Mustache_Tokenizer
private function addPragma($text, $index)
{
$end = strpos($text, $this->ctag, $index);
+ if ($end === false) {
+ $this->throwUnclosedTagException();
+ }
+
$pragma = trim(substr($text, $index + 2, $end - $index - 2));
// Pragmas are hoisted to the front of the template.
@@ -344,4 +356,23 @@ class Mustache_Tokenizer
return $end + $this->ctagLen - 1;
}
+
+ private function throwUnclosedTagException()
+ {
+ $name = trim($this->buffer);
+ if ($name !== '') {
+ $msg = sprintf('Unclosed tag: %s on line %d', $name, $this->line);
+ } else {
+ $msg = sprintf('Unclosed tag on line %d', $this->line);
+ }
+
+ throw new Mustache_Exception_SyntaxException($msg, array(
+ self::TYPE => $this->tagType,
+ self::NAME => $name,
+ self::OTAG => $this->otag,
+ self::CTAG => $this->ctag,
+ self::LINE => $this->line,
+ self::INDEX => $this->seenTag - $this->otagLen,
+ ));
+ }
}
diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml
index bc3cf50b84d..2f87c6aa2ef 100644
--- a/lib/thirdpartylibs.xml
+++ b/lib/thirdpartylibs.xml
@@ -308,7 +308,7 @@ All rights reserved.
mustache
Mustache
PHP library for displaying mustache templates.
- 2.14.1
+ 2.14.2
MIT
https://github.com/bobthecow/mustache.php