MDL-40676 ignore null bytes
authorPetr Škoda <commits@skodak.org>
Wed, 24 Jul 2013 21:06:21 +0000 (23:06 +0200)
committerDan Poltawski <dan@moodle.com>
Mon, 2 Sep 2013 04:28:29 +0000 (12:28 +0800)
lib/configonlylib.php
lib/dml/mssql_native_moodle_database.php
lib/dml/sqlsrv_native_moodle_database.php
lib/moodlelib.php
lib/tests/moodlelib_test.php

index 031ac61..8192704 100644 (file)
@@ -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€');
index d105b52..e99744f 100644 (file)
@@ -639,6 +639,7 @@ class mssql_native_moodle_database extends moodle_database {
 
             } else {
                 $param = str_replace("'", "''", $param);
+                $param = str_replace("\0", "", $param);
                 $return .= "N'$param'";
             }
 
index d693418..4de93bf 100644 (file)
@@ -719,6 +719,7 @@ class sqlsrv_native_moodle_database extends moodle_database {
                 $return .= $param;
             } else {
                 $param = str_replace("'", "''", $param);
+                $param = str_replace("\0", "", $param);
                 $return .= "N'$param'";
             }
 
index a1f8a0a..aa67d85 100644 (file)
@@ -1158,6 +1158,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();
index e4608da..a458bdd 100644 (file)
@@ -449,7 +449,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.');