MDL-55724 Glossary: Prevent infinite loop in trusttext_strip
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user