MDL-55724 Glossary: Prevent infinite loop in trusttext_strip

This commit is contained in:
sam marshall
2016-08-30 10:32:00 +01:00
parent b5f3ed32a6
commit 599e1a877b
2 changed files with 9 additions and 1 deletions
+4
View File
@@ -1538,6 +1538,10 @@ function strip_pluginfile_content($source) {
* @return string text without legacy TRUSTTEXT marker
*/
function trusttext_strip($text) {
if (!is_string($text)) {
// This avoids the potential for an endless loop below.
throw new coding_exception('trusttext_strip parameter must be a string');
}
while (true) { // Removing nested TRUSTTEXT.
$orig = $text;
$text = str_replace('#####TRUSTTEXT#####', '', $text);
+5 -1
View File
@@ -170,7 +170,11 @@ if ($xml = glossary_read_imported_file($result)) {
$xmlentry = $xmlentries[$i];
$newentry = new stdClass();
$newentry->concept = trim($xmlentry['#']['CONCEPT'][0]['#']);
$newentry->definition = trusttext_strip($xmlentry['#']['DEFINITION'][0]['#']);
$definition = $xmlentry['#']['DEFINITION'][0]['#'];
if (!is_string($definition)) {
print_error('errorparsingxml', 'glossary');
}
$newentry->definition = trusttext_strip($definition);
if ( isset($xmlentry['#']['CASESENSITIVE'][0]['#']) ) {
$newentry->casesensitive = $xmlentry['#']['CASESENSITIVE'][0]['#'];
} else {