Merge pull request #17863 from kamil-tekiela/Fix-import/export-escaping

Fix import/export escaping
This commit is contained in:
Maurício Meneghini Fauth 2022-11-05 12:52:08 -03:00 committed by GitHub
commit b3aaeded6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 15 deletions

View File

@ -150,10 +150,9 @@ final class ImportController extends AbstractController
// apply values for parameters
if (! empty($_POST['parameterized']) && ! empty($_POST['parameters']) && is_array($_POST['parameters'])) {
$parameters = $_POST['parameters'];
foreach ($parameters as $parameter => $replacement) {
$replacementValue = $this->dbi->escapeString($replacement);
foreach ($parameters as $parameter => $replacementValue) {
if (! is_numeric($replacementValue)) {
$replacementValue = '\'' . $replacementValue . '\'';
$replacementValue = '\'' . $this->dbi->escapeString($replacementValue) . '\'';
}
$quoted = preg_quote($parameter, '/');

View File

@ -2403,23 +2403,20 @@ class ExportSql extends ExportPlugin
}
} elseif ($fieldsMeta[$j]->isMappedTypeBit) {
// detection of 'bit' works only on mysqli extension
$values[] = "b'" . $dbi->escapeString(
Util::printableBitValue(
(int) $row[$j],
(int) $fieldsMeta[$j]->length
)
)
. "'";
$values[] = "b'" . Util::printableBitValue(
(int) $row[$j],
(int) $fieldsMeta[$j]->length
) . "'";
} elseif ($fieldsMeta[$j]->isMappedTypeGeometry) {
// export GIS types as hex
$values[] = '0x' . bin2hex($row[$j]);
} elseif (! empty($GLOBALS['exporting_metadata']) && $row[$j] === '@LAST_PAGE') {
$values[] = '@LAST_PAGE';
} elseif ($row[$j] === '') {
$values[] = "''";
} else {
// something else -> treat as a string
$values[] = '\''
. $dbi->escapeString($row[$j])
. '\'';
$values[] = '\'' . $dbi->escapeString($row[$j]) . '\'';
}
}

View File

@ -1320,6 +1320,11 @@ parameters:
count: 1
path: libraries/classes/Controllers/Import/ImportController.php
-
message: "#^Parameter \\#2 \\$replace of function preg_replace expects array\\|string, float\\|int\\|string\\|string given\\.$#"
count: 1
path: libraries/classes/Controllers/Import/ImportController.php
-
message: "#^Parameter \\#2 \\$size of method PhpMyAdmin\\\\Import\\:\\:getNextChunk\\(\\) expects int, float\\|int given\\.$#"
count: 1

View File

@ -2206,7 +2206,7 @@
<code>$import_type</code>
<code>$local_import_file</code>
<code>$parameter</code>
<code>$replacement</code>
<code>$replacementValue</code>
<code>$skip &lt; $read_limit ? $skip : $read_limit</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast occurrences="7">
@ -2216,7 +2216,7 @@
<code>$_POST['sql_query']</code>
<code>$format</code>
<code>$local_import_file</code>
<code>$replacement</code>
<code>$replacementValue</code>
</PossiblyInvalidCast>
<PossiblyInvalidOperand occurrences="3">
<code>$charset_of_file</code>