From 5f5dc024a16423e63b3845065535c1d689f0a80a Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 15:53:50 +0100 Subject: [PATCH 1/9] Fix #15592 - Warning: error_reporting() has been disabled for security reasons Fixes: #15592 Signed-off-by: William Desportes --- libraries/classes/Config.php | 18 ++++++++++++++---- libraries/classes/ErrorHandler.php | 8 +++++++- show_config_errors.php | 5 ++++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/libraries/classes/Config.php b/libraries/classes/Config.php index 30b52ca05e..2b4ccef7e2 100644 --- a/libraries/classes/Config.php +++ b/libraries/classes/Config.php @@ -768,13 +768,18 @@ class Config $this->error_config_default_file = true; return false; } - $old_error_reporting = error_reporting(0); + $canUseErrorReporting = function_exists('error_reporting'); + if ($canUseErrorReporting) { + $old_error_reporting = error_reporting(0); + } ob_start(); $GLOBALS['pma_config_loading'] = true; $eval_result = include $this->default_source; $GLOBALS['pma_config_loading'] = false; ob_end_clean(); - error_reporting($old_error_reporting); + if ($canUseErrorReporting) { + error_reporting($old_error_reporting); + } if ($eval_result === false) { $this->error_config_default_file = true; @@ -820,13 +825,18 @@ class Config * Parses the configuration file, we throw away any errors or * output. */ - $old_error_reporting = error_reporting(0); + $canUseErrorReporting = function_exists('error_reporting'); + if ($canUseErrorReporting) { + $old_error_reporting = error_reporting(0); + } ob_start(); $GLOBALS['pma_config_loading'] = true; $eval_result = include $this->getSource(); $GLOBALS['pma_config_loading'] = false; ob_end_clean(); - error_reporting($old_error_reporting); + if ($canUseErrorReporting) { + error_reporting($old_error_reporting); + } if ($eval_result === false) { $this->error_config_file = true; diff --git a/libraries/classes/ErrorHandler.php b/libraries/classes/ErrorHandler.php index f99c3d27e4..47752f21e4 100644 --- a/libraries/classes/ErrorHandler.php +++ b/libraries/classes/ErrorHandler.php @@ -50,7 +50,9 @@ class ErrorHandler if (!defined('TESTSUITE')) { set_error_handler(array($this, 'handleError')); } - $this->error_reporting = error_reporting(); + if (function_exists('error_reporting')) { + $this->error_reporting = error_reporting(); + } } /** @@ -157,6 +159,10 @@ class ErrorHandler */ public function handleError($errno, $errstr, $errfile, $errline) { + if (! function_exists('error_reporting')) { + return; + } + /** * Check if Error Control Operator (@) was used, but still show * user errors even in this case. diff --git a/show_config_errors.php b/show_config_errors.php index 993975bb7b..64408dc906 100644 --- a/show_config_errors.php +++ b/show_config_errors.php @@ -30,7 +30,10 @@ header('Content-Type: text/html; charset=utf-8'); require 'libraries/vendor_config.php'; -error_reporting(E_ALL); +if (function_exists('error_reporting')) { + error_reporting(E_ALL); +} + /** * Read config file. */ From b6e1ea68f3f9f22885b146aefd0bb74eb3eab67b Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 15:54:36 +0100 Subject: [PATCH 2/9] Fix issue reported by Scrutinizer It seems like ... can also be of type null; however, parameter $existrel_foreign of PhpMyAdmin\Table::updateForeignKeys does only seem to accept array Link: https://scrutinizer-ci.com/g/phpmyadmin/phpmyadmin/inspections/72ec4952-c554-485c-b2f9-0898330b9368/issues/files/libraries/classes/Controllers/Table/RelationController.php?status=new&orderField=path&order=asc&honorSelectedPaths=0&issueId=42062672 Signed-off-by: William Desportes --- libraries/classes/Controllers/Table/TableRelationController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/classes/Controllers/Table/TableRelationController.php b/libraries/classes/Controllers/Table/TableRelationController.php index e6cad3f8d6..de7ff78f70 100644 --- a/libraries/classes/Controllers/Table/TableRelationController.php +++ b/libraries/classes/Controllers/Table/TableRelationController.php @@ -258,7 +258,7 @@ class TableRelationController extends TableController $this->table, is_array($this->existrel_foreign) && array_key_exists('foreign_keys_data', $this->existrel_foreign) ? $this->existrel_foreign['foreign_keys_data'] - : null + : [] ); $this->response->addHTML($html); } From d935fe286f9064ef788d05074380a042376e5a6b Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 15:58:59 +0100 Subject: [PATCH 3/9] Add ChangeLog entry for #15592 Signed-off-by: William Desportes --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index aa30407683..04de5c3439 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ phpMyAdmin - ChangeLog 4.9.3 (not yet released) - issue #15570 Fix page contents go underneath of floating menubar in some cases - issue #15591 Fix php notice 'Undefined index: foreign_keys_data' on relations view when the user has column access +- issue #15592 Fix php warning "error_reporting() has been disabled for security reasons" 4.9.2 (2019-11-21) - issue #14184 Change the cookie name from phpMyAdmin to phpMyAdmin_https for HTTPS, fixes many "Failed to set session cookie" errors From 2f0fff5fa1142af08d085625de8350aa6701e021 Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 17:07:04 +0100 Subject: [PATCH 4/9] Fix #15592 - Add all errors since we do not have access to error_reporting function Signed-off-by: William Desportes --- libraries/classes/ErrorHandler.php | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/libraries/classes/ErrorHandler.php b/libraries/classes/ErrorHandler.php index 47752f21e4..6cc638e00a 100644 --- a/libraries/classes/ErrorHandler.php +++ b/libraries/classes/ErrorHandler.php @@ -159,20 +159,19 @@ class ErrorHandler */ public function handleError($errno, $errstr, $errfile, $errline) { - if (! function_exists('error_reporting')) { - return; + if (function_exists('error_reporting')) { + /** + * Check if Error Control Operator (@) was used, but still show + * user errors even in this case. + */ + if (error_reporting() == 0 && + $this->error_reporting != 0 && + ($errno & (E_USER_WARNING | E_USER_ERROR | E_USER_NOTICE)) == 0 + ) { + return; + } } - /** - * Check if Error Control Operator (@) was used, but still show - * user errors even in this case. - */ - if (error_reporting() == 0 && - $this->error_reporting != 0 && - ($errno & (E_USER_WARNING | E_USER_ERROR | E_USER_NOTICE)) == 0 - ) { - return; - } $this->addError($errstr, $errno, $errfile, $errline, true); } From ecb5faac0c403ddc305617efbf2ad999fbe6f4dd Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 16:50:10 +0100 Subject: [PATCH 5/9] Fix #15434 - Add support for middle click on table sort column Signed-off-by: William Desportes --- libraries/classes/Display/Results.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/classes/Display/Results.php b/libraries/classes/Display/Results.php index 14fd6714fb..4b3b3e4608 100644 --- a/libraries/classes/Display/Results.php +++ b/libraries/classes/Display/Results.php @@ -1856,6 +1856,7 @@ class Results 'db' => $this->__get('db'), 'table' => $this->__get('table'), 'sql_query' => $single_sorted_sql_query, + 'sql_signature' => Core::signSqlQuery($single_sorted_sql_query), 'session_max_rows' => $session_max_rows, 'is_browse_distinct' => $this->__get('is_browse_distinct'), ); @@ -1864,6 +1865,7 @@ class Results 'db' => $this->__get('db'), 'table' => $this->__get('table'), 'sql_query' => $multi_sorted_sql_query, + 'sql_signature' => Core::signSqlQuery($multi_sorted_sql_query), 'session_max_rows' => $session_max_rows, 'is_browse_distinct' => $this->__get('is_browse_distinct'), ); From 4aa4095e3064f5526d067268686092fbe5bd959a Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 16:51:04 +0100 Subject: [PATCH 6/9] Add ChangeLog for #15434 Signed-off-by: William Desportes --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 04de5c3439..146daf17bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ phpMyAdmin - ChangeLog - issue #15570 Fix page contents go underneath of floating menubar in some cases - issue #15591 Fix php notice 'Undefined index: foreign_keys_data' on relations view when the user has column access - issue #15592 Fix php warning "error_reporting() has been disabled for security reasons" +- issue #15434 Fix middle click on table sort column name shows a blank page 4.9.2 (2019-11-21) - issue #14184 Change the cookie name from phpMyAdmin to phpMyAdmin_https for HTTPS, fixes many "Failed to set session cookie" errors From 8f470aaa2fb2cbb399e40eaa0f19614737dc91b6 Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 17:14:22 +0100 Subject: [PATCH 7/9] Fix #15592 - Hide user warning, errors and notices Signed-off-by: William Desportes --- libraries/classes/ErrorHandler.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/classes/ErrorHandler.php b/libraries/classes/ErrorHandler.php index 6cc638e00a..0c8ad34910 100644 --- a/libraries/classes/ErrorHandler.php +++ b/libraries/classes/ErrorHandler.php @@ -170,6 +170,10 @@ class ErrorHandler ) { return; } + } else { + if (($errno & (E_USER_WARNING | E_USER_ERROR | E_USER_NOTICE)) == 0) { + return; + } } $this->addError($errstr, $errno, $errfile, $errline, true); From 99a8b4ea4d8b924740858df97f37123ec784128e Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 17:34:59 +0100 Subject: [PATCH 8/9] Fix php notice "undefined index table_create_time" when setting displayed columns on results of a view Signed-off-by: William Desportes --- libraries/classes/Sql.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/classes/Sql.php b/libraries/classes/Sql.php index a09f659817..f48c85f45b 100644 --- a/libraries/classes/Sql.php +++ b/libraries/classes/Sql.php @@ -763,7 +763,7 @@ EOT; $retval = $pmatable->setUiProp( $property_to_set, $property_value, - $_POST['table_create_time'] + isset($_POST['table_create_time']) ? $_POST['table_create_time'] : null ); if (gettype($retval) != 'boolean') { $response = Response::getInstance(); From c1e8674fa6b2e719acac0da7460ab7d5beed7a86 Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 24 Nov 2019 17:35:36 +0100 Subject: [PATCH 9/9] Add ChangeLog for 99a8b4ea4d Signed-off-by: William Desportes --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 146daf17bc..aca7a39dc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ phpMyAdmin - ChangeLog - issue #15591 Fix php notice 'Undefined index: foreign_keys_data' on relations view when the user has column access - issue #15592 Fix php warning "error_reporting() has been disabled for security reasons" - issue #15434 Fix middle click on table sort column name shows a blank page +- issue Fix php notice "Undefined index table_create_time" when setting displayed columns on results of a view 4.9.2 (2019-11-21) - issue #14184 Change the cookie name from phpMyAdmin to phpMyAdmin_https for HTTPS, fixes many "Failed to set session cookie" errors