MDL-76838 backup: remove invalid utf8 code sequences writing XML.

The surrogate blocks FFFE and FFFF are non-characters, specifically
disallowed in the character range for XML documents.
This commit is contained in:
Paul Holden
2023-05-22 21:04:07 +01:00
parent 4781b41631
commit b938b53096
2 changed files with 4 additions and 3 deletions
+1 -1
View File
@@ -262,7 +262,7 @@ class xml_writer {
protected function xml_safe_utf8($content) {
$content = preg_replace('/[\x-\x8\xb-\xc\xe-\x1f\x7f]/is', '', $content ?? ''); // clean CTRL chars.
$content = preg_replace("/\r\n|\r/", "\n", $content); // Normalize line&return=>line
return $content;
return fix_utf8($content);
}
/**
+3 -2
View File
@@ -1318,8 +1318,9 @@ function fix_utf8($value) {
// Shortcut.
return $value;
}
// No null bytes expected in our data, so let's remove it.
$value = str_replace("\0", '', $value);
// Remove null bytes or invalid Unicode sequences from value.
$value = str_replace(["\0", "\xef\xbf\xbe", "\xef\xbf\xbf"], '', $value);
// Note: this duplicates min_fix_utf8() intentionally.
static $buggyiconv = null;