diff --git a/ChangeLog b/ChangeLog index d3e655c4c..8f26014ec 100755 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,8 @@ $Source$ * sql.php: Work even if no db set. * server_status.php: Call sql.php directly, we don't need to care about query splitting done im read_dump. + * libraries/import/sql.php: Fix import of queries containing `, fix import + of queries not terminated by ;. 2005-10-07 Marc Delisle * libraries/check_user_privileges.lib.php: bug #1313821, dbname containing a diff --git a/libraries/import/sql.php b/libraries/import/sql.php index 8ad83672f..5b4f408ad 100644 --- a/libraries/import/sql.php +++ b/libraries/import/sql.php @@ -50,7 +50,9 @@ if (isset($import_list)) { if ($p5 === FALSE) $p5 = 2147483647; $p6 = strpos($buffer, '/*', $i); if ($p6 === FALSE) $p6 = 2147483647; - $i = min ($p1, $p2, $p3, $p4, $p5, $p6); + $p7 = strpos($buffer, '`', $i); + if ($p7 === FALSE) $p7 = 2147483647; + $i = min ($p1, $p2, $p3, $p4, $p5, $p6, $p7); if ($i == 2147483647) { $i = $oi; if (!$finished) break; @@ -60,6 +62,8 @@ if (isset($import_list)) { $len = 0; break; } + // We hit end of query, go there! + $i = strlen($buffer) - 1; } // Grab current character @@ -73,7 +77,7 @@ if (isset($import_list)) { // Find next quote $pos = strpos($buffer, $quote, $i + 1); // No quote? Too short string - if ($pos == FALSE) break; + if ($pos === FALSE) break; // Was not the quote escaped? $j = $pos - 1; while ($buffer[$j] == '\\') $j--;