MDL-40676 ignore null bytes
This commit is contained in:
committed by
Dan Poltawski
parent
5218a6e8fb
commit
71b06edf6b
@@ -95,6 +95,9 @@ function min_fix_utf8($value) {
|
||||
error_reporting($olderror ^ E_NOTICE);
|
||||
}
|
||||
|
||||
// No null bytes expected in our data, so let's remove it.
|
||||
$value = str_replace("\0", '', $value);
|
||||
|
||||
static $buggyiconv = null;
|
||||
if ($buggyiconv === null) {
|
||||
$buggyiconv = (!function_exists('iconv') or iconv('UTF-8', 'UTF-8//IGNORE', '100'.chr(130).'€') !== '100€');
|
||||
|
||||
@@ -648,6 +648,7 @@ class mssql_native_moodle_database extends moodle_database {
|
||||
|
||||
} else {
|
||||
$param = str_replace("'", "''", $param);
|
||||
$param = str_replace("\0", "", $param);
|
||||
$return .= "N'$param'";
|
||||
}
|
||||
|
||||
|
||||
@@ -727,6 +727,7 @@ class sqlsrv_native_moodle_database extends moodle_database {
|
||||
$return .= $param;
|
||||
} else {
|
||||
$param = str_replace("'", "''", $param);
|
||||
$param = str_replace("\0", "", $param);
|
||||
$return .= "N'$param'";
|
||||
}
|
||||
|
||||
|
||||
@@ -1181,6 +1181,8 @@ function fix_utf8($value) {
|
||||
// shortcut
|
||||
return $value;
|
||||
}
|
||||
// No null bytes expected in our data, so let's remove it.
|
||||
$value = str_replace("\0", '', $value);
|
||||
|
||||
// Lower error reporting because glibc throws bogus notices.
|
||||
$olderror = error_reporting();
|
||||
|
||||
@@ -486,7 +486,7 @@ class moodlelib_testcase extends advanced_testcase {
|
||||
$this->assertEquals($object, fix_utf8($object));
|
||||
|
||||
// valid utf8 string
|
||||
$this->assertSame("žlutý koníček přeskočil potůček \n\t\r\0", fix_utf8("žlutý koníček přeskočil potůček \n\t\r\0"));
|
||||
$this->assertSame("žlutý koníček přeskočil potůček \n\t\r", fix_utf8("žlutý koníček přeskočil potůček \n\t\r\0"));
|
||||
|
||||
// invalid utf8 string
|
||||
$this->assertSame('aš', fix_utf8('a'.chr(130).'š'), 'This fails with buggy iconv() when mbstring extenstion is not available as fallback.');
|
||||
|
||||
Reference in New Issue
Block a user