You've already forked phpmyadmin
mirror of
https://github.com/phpmyadmin/phpmyadmin.git
synced 2026-10-31 10:54:46 +03:00
Validate (sub)partion count from request before use
Signed-off-by: Michal Čihař <michal@cihar.com>
This commit is contained in:
@@ -14,17 +14,31 @@ if (!isset($partitionDetails)) {
|
||||
|
||||
// Extract some partitioning and subpartitioning parameters from the request
|
||||
$partitionParams = array(
|
||||
'partition_by', 'partition_expr', 'partition_count',
|
||||
'subpartition_by', 'subpartition_expr', 'subpartition_count'
|
||||
'partition_by', 'partition_expr',
|
||||
'subpartition_by', 'subpartition_expr',
|
||||
);
|
||||
foreach ($partitionParams as $partitionParam) {
|
||||
$partitionDetails[$partitionParam] = isset($_REQUEST[$partitionParam])
|
||||
? $_REQUEST[$partitionParam] : '';
|
||||
}
|
||||
|
||||
if (PMA_isValid($_REQUEST['partition_count'], 'numeric')) {
|
||||
// MySQL's limit is 8192, so do not allow more
|
||||
$partition_count = min(intval($_REQUEST['partition_count']), 8192);
|
||||
} else {
|
||||
$partition_count = 0;
|
||||
}
|
||||
$partitionDetails['partition_count'] = $partition_count;
|
||||
if (PMA_isValid($_REQUEST['subpartition_count'], 'numeric')) {
|
||||
// MySQL's limit is 8192, so do not allow more
|
||||
$subpartition_count = min(intval($_REQUEST['subpartition_count']), 8192);
|
||||
} else {
|
||||
$subpartition_count = 0;
|
||||
}
|
||||
$partitionDetails['subpartition_count'] = $subpartition_count;
|
||||
|
||||
// Only LIST and RANGE type parameters allow subpartitioning
|
||||
$partitionDetails['can_have_subpartitions'] = isset($_REQUEST['partition_count'])
|
||||
&& $_REQUEST['partition_count'] > 1
|
||||
$partitionDetails['can_have_subpartitions'] = $partition_count > 1
|
||||
&& isset($_REQUEST['partition_by'])
|
||||
&& ($_REQUEST['partition_by'] == 'RANGE'
|
||||
|| $_REQUEST['partition_by'] == 'RANGE COLUMNS'
|
||||
@@ -38,18 +52,17 @@ if (!isset($partitionDetails)) {
|
||||
|| $_REQUEST['partition_by'] == 'LIST'
|
||||
|| $_REQUEST['partition_by'] == 'LIST COLUMNS');
|
||||
|
||||
if (PMA_isValid($_REQUEST['partition_count'], 'numeric')
|
||||
&& $_REQUEST['partition_count'] > 1
|
||||
) { // Has partitions
|
||||
// Has partitions
|
||||
if ($partition_count > 1) {
|
||||
$partitions = isset($_REQUEST['partitions'])
|
||||
? $_REQUEST['partitions']
|
||||
: array();
|
||||
|
||||
// Remove details of the additional partitions
|
||||
// when number of partitions have been reduced
|
||||
array_splice($partitions, $_REQUEST['partition_count']);
|
||||
array_splice($partitions, $partition_count);
|
||||
|
||||
for ($i = 0; $i < $_REQUEST['partition_count']; $i++) {
|
||||
for ($i = 0; $i < $partition_count; $i++) {
|
||||
if (! isset($partitions[$i])) { // Newly added partition
|
||||
$partitions[$i] = array(
|
||||
'name' => 'p' . $i,
|
||||
@@ -85,11 +98,10 @@ if (!isset($partitionDetails)) {
|
||||
$partition['node_group'] = '';
|
||||
}
|
||||
|
||||
if (PMA_isValid($_REQUEST['subpartition_count'], 'numeric')
|
||||
&& $_REQUEST['subpartition_count'] > 1
|
||||
if ($subpartition_count > 1
|
||||
&& $partitionDetails['can_have_subpartitions'] == true
|
||||
) { // Has subpartitions
|
||||
$partition['subpartition_count'] = $_REQUEST['subpartition_count'];
|
||||
$partition['subpartition_count'] = $subpartition_count;
|
||||
|
||||
if (! isset($partition['subpartitions'])) {
|
||||
$partition['subpartitions'] = array();
|
||||
@@ -98,9 +110,9 @@ if (!isset($partitionDetails)) {
|
||||
|
||||
// Remove details of the additional subpartitions
|
||||
// when number of subpartitions have been reduced
|
||||
array_splice($subpartitions, $_REQUEST['subpartition_count']);
|
||||
array_splice($subpartitions, $subpartition_count);
|
||||
|
||||
for ($j = 0; $j < $_REQUEST['subpartition_count']; $j++) {
|
||||
for ($j = 0; $j < $subpartition_count; $j++) {
|
||||
if (! isset($subpartitions[$j])) { // Newly added subpartition
|
||||
$subpartitions[$j] = array(
|
||||
'name' => $partition['name'] . '_s' . $j,
|
||||
|
||||
Reference in New Issue
Block a user