Merge branch 'pokemaobr-push'

Closes https://github.com/phpmyadmin/phpmyadmin/pull/17791

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2022-10-14 23:57:29 -03:00
commit f3e31dfdd1
8 changed files with 78 additions and 48 deletions

View File

@ -26,7 +26,7 @@ final class CollationConnectionController extends AbstractController
$this->config->setUserValue(
null,
'DefaultConnectionCollation',
$_POST['collation_connection'],
$request->getParsedBodyParam('collation_connection'),
'utf8mb4_unicode_ci'
);

View File

@ -26,7 +26,7 @@ class SchemaExportController
public function __invoke(ServerRequest $request): void
{
if (! isset($_POST['export_type'])) {
if ($request->getParsedBodyParam('export_type') === null) {
$errorMessage = __('Missing parameter:') . ' export_type'
. MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true)
. '[br]';

View File

@ -42,10 +42,10 @@ final class SetValuesController extends AbstractController
{
$this->checkUserPrivileges->getPrivileges();
$column = $_POST['column'];
$currentValue = $_POST['curr_value'];
$fullValues = $_POST['get_full_values'] ?? false;
$whereClause = $_POST['where_clause'] ?? null;
$column = $request->getParsedBodyParam('column');
$currentValue = $request->getParsedBodyParam('curr_value');
$fullValues = $request->getParsedBodyParam('get_full_values', false);
$whereClause = $request->getParsedBodyParam('where_clause');
$values = $this->sql->getValuesForColumn($GLOBALS['db'], $GLOBALS['table'], $column);

View File

@ -23,13 +23,13 @@ final class TableController extends AbstractController
public function __invoke(ServerRequest $request): void
{
if (! isset($_POST['db'])) {
if ($request->getParsedBodyParam('db') === null) {
$this->response->setRequestStatus(false);
$this->response->addJSON(['message' => Message::error()]);
return;
}
$this->response->addJSON(['tables' => $this->dbi->getTables($_POST['db'])]);
$this->response->addJSON(['tables' => $this->dbi->getTables($request->getParsedBodyParam('db'))]);
}
}

View File

@ -1010,6 +1010,11 @@ parameters:
count: 1
path: libraries/classes/Controllers/AbstractController.php
-
message: "#^Parameter \\#3 \\$new_cfg_value of method PhpMyAdmin\\\\Config\\:\\:setUserValue\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/CollationConnectionController.php
-
message: "#^Parameter \\#3 \\$new_cfg_value of method PhpMyAdmin\\\\Config\\:\\:setUserValue\\(\\) expects string, mixed given\\.$#"
count: 1
@ -1465,6 +1470,26 @@ parameters:
count: 1
path: libraries/classes/Controllers/Setup/ServersController.php
-
message: "#^Parameter \\#1 \\$string of function htmlentities expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Sql/SetValuesController.php
-
message: "#^Parameter \\#3 \\$column of method PhpMyAdmin\\\\Sql\\:\\:getFullValuesForSetColumn\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Sql/SetValuesController.php
-
message: "#^Parameter \\#3 \\$column of method PhpMyAdmin\\\\Sql\\:\\:getValuesForColumn\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Sql/SetValuesController.php
-
message: "#^Parameter \\#4 \\$whereClause of method PhpMyAdmin\\\\Sql\\:\\:getFullValuesForSetColumn\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Sql/SetValuesController.php
-
message: "#^Property PhpMyAdmin\\\\SqlParser\\\\Statements\\\\SelectStatement\\:\\:\\$limit \\(PhpMyAdmin\\\\SqlParser\\\\Components\\\\Limit\\) in empty\\(\\) is not falsy\\.$#"
count: 1
@ -1755,6 +1780,11 @@ parameters:
count: 1
path: libraries/classes/Controllers/Table/ZoomSearchController.php
-
message: "#^Parameter \\#1 \\$database of method PhpMyAdmin\\\\DatabaseInterface\\:\\:getTables\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/TableController.php
-
message: "#^Parameter \\#1 \\$string of function substr expects string, mixed given\\.$#"
count: 1

View File

@ -969,12 +969,9 @@
</UnusedFunctionCall>
</file>
<file src="libraries/classes/Controllers/CollationConnectionController.php">
<PossiblyInvalidArgument occurrences="1">
<code>$_POST['collation_connection']</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast occurrences="1">
<code>$_POST['collation_connection']</code>
</PossiblyInvalidCast>
<MixedArgument occurrences="1">
<code>$request-&gt;getParsedBodyParam('collation_connection')</code>
</MixedArgument>
</file>
<file src="libraries/classes/Controllers/Config/SetConfigController.php">
<MixedArgument occurrences="1">
@ -3159,18 +3156,17 @@
</PossiblyInvalidCast>
</file>
<file src="libraries/classes/Controllers/Sql/SetValuesController.php">
<PossiblyInvalidArgument occurrences="4">
<code>$column</code>
<MixedArgument occurrences="3">
<code>$column</code>
<code>$currentValue</code>
<code>$whereClause</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast occurrences="4">
<code>$column</code>
</MixedArgument>
<MixedAssignment occurrences="4">
<code>$column</code>
<code>$currentValue</code>
<code>$fullValues</code>
<code>$whereClause</code>
</PossiblyInvalidCast>
</MixedAssignment>
</file>
<file src="libraries/classes/Controllers/Sql/SqlController.php">
<InvalidArrayOffset occurrences="1">
@ -4466,12 +4462,9 @@
</RedundantCastGivenDocblockType>
</file>
<file src="libraries/classes/Controllers/TableController.php">
<PossiblyInvalidArgument occurrences="1">
<code>$_POST['db']</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast occurrences="1">
<code>$_POST['db']</code>
</PossiblyInvalidCast>
<MixedArgument occurrences="1">
<code>$request-&gt;getParsedBodyParam('db')</code>
</MixedArgument>
</file>
<file src="libraries/classes/Controllers/ThemeSetController.php">
<InvalidArrayOffset occurrences="1">

View File

@ -19,7 +19,10 @@ class CollationConnectionControllerTest extends AbstractTestCase
{
public function testInvoke(): void
{
$_POST['collation_connection'] = 'utf8mb4_general_ci';
$request = $this->createStub(ServerRequest::class);
$request->method('getParsedBodyParam')->willReturnMap([
['collation_connection', null, 'utf8mb4_general_ci'],
]);
$response = $this->createMock(ResponseRenderer::class);
$response->expects($this->once())->method('header')
@ -33,6 +36,6 @@ class CollationConnectionControllerTest extends AbstractTestCase
$response,
new Template(),
$config
))($this->createStub(ServerRequest::class));
))($request);
}
}

View File

@ -39,21 +39,23 @@ class SetValuesControllerTest extends AbstractTestCase
{
$this->dummyDbi->addResult('SHOW COLUMNS FROM `cvv`.`enums` LIKE \'set\'', false);
$_POST = [
'ajax_request' => true,
'db' => 'cvv',
'table' => 'enums',
'column' => 'set',
'curr_value' => 'b&c',
];
$GLOBALS['db'] = $_POST['db'];
$GLOBALS['table'] = $_POST['table'];
$request = $this->createStub(ServerRequest::class);
$request->method('getParsedBodyParam')->willReturnMap([
['ajax_request', null, true],
['db', null, 'cvv'],
['table', null, 'enums'],
['column', null, 'set'],
['curr_value', null, 'b&c'],
]);
$GLOBALS['db'] = 'cvv';
$GLOBALS['table'] = 'enums';
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
/** @var SetValuesController $sqlController */
$sqlController = $GLOBALS['containerBuilder']->get(SetValuesController::class);
$sqlController($this->createStub(ServerRequest::class));
$sqlController($request);
$this->assertResponseWasNotSuccessfull();
@ -87,21 +89,23 @@ class SetValuesControllerTest extends AbstractTestCase
]
);
$_POST = [
'ajax_request' => true,
'db' => 'cvv',
'table' => 'enums',
'column' => 'set',
'curr_value' => 'b&c',
];
$GLOBALS['db'] = $_POST['db'];
$GLOBALS['table'] = $_POST['table'];
$request = $this->createStub(ServerRequest::class);
$request->method('getParsedBodyParam')->willReturnMap([
['ajax_request', null, true],
['db', null, 'cvv'],
['table', null, 'enums'],
['column', null, 'set'],
['curr_value', null, 'b&c'],
]);
$GLOBALS['db'] = 'cvv';
$GLOBALS['table'] = 'enums';
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
/** @var SetValuesController $sqlController */
$sqlController = $GLOBALS['containerBuilder']->get(SetValuesController::class);
$sqlController($this->createStub(ServerRequest::class));
$sqlController($request);
$this->assertResponseWasSuccessfull();