Permalink
Browse files

Parse 'a\';' on webserver file separation

  • Loading branch information...
1 parent 323f4ab commit f0d0bdbf39fbafb5f8219552d0d146200c66996e @vrana committed Aug 4, 2011
Showing with 4 additions and 3 deletions.
  1. +3 −3 adminer/sql.inc.php
  2. +1 −0 changes.txt
View
@@ -63,19 +63,19 @@
} else {
preg_match('(' . preg_quote($delimiter) . "|$parse)", $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match
$found = $match[0][0];
- $offset = $match[0][1] + strlen($found);
if (!$found && $fp && !feof($fp)) {
$query .= fread($fp, 1e5);
} else {
+ $offset = $match[0][1] + strlen($found);
if (!$found && rtrim($query) == "") {
break;
}
if ($found && $found != $delimiter) { // find matching quote or comment end
while (preg_match('(' . ($found == '/*' ? '\\*/' : ($found == '[' ? ']' : (ereg('^-- |^#', $found) ? "\n" : preg_quote($found) . "|\\\\."))) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
$s = $match[0][0];
- $offset = $match[0][1] + strlen($s);
+ $offset = $match[0][1] + ($s ? strlen($s) : -strlen($found)); // strlen($found) is higher than length of longest pattern minus one
if (!$s && $fp && !feof($fp)) {
- $query .= fread($fp, 1e6);
+ $query .= fread($fp, 1e5);
} elseif ($s[0] != "\\") {
break;
}
View
@@ -1,5 +1,6 @@
Adminer 3.3.2-dev:
Display error with non-existent row in edit
+Fix minor parser bug in SQL command with webserver file
Don't scroll with AJAX select order and alter move column
Fast number of rows with big tables (PostgreSQL)
Sort databases and schemas (PostgreSQL)

0 comments on commit f0d0bdb

Please sign in to comment.