diff --git a/lib/Config/Database.php b/lib/Config/Database.php index 2756a7a09c..1bbc7834b3 100644 --- a/lib/Config/Database.php +++ b/lib/Config/Database.php @@ -42,9 +42,17 @@ class Database { $driver_options[] = $character_set; } - $current_options = ORM::for_table("") - ->raw_query('SELECT @@session.wait_timeout as wait_timeout') - ->findOne(); + /** + * Rethrow PDOExceptions to prevent exposing sensitive data in stack traces + */ + try { + $current_options = ORM::for_table("") + ->raw_query('SELECT @@session.wait_timeout as wait_timeout') + ->findOne(); + } catch (\PDOException $e) { + throw new \Exception($e->getMessage()); + } + if($current_options && (int)$current_options->wait_timeout < $this->driver_option_wait_timeout) { $driver_options[] = 'SESSION wait_timeout = ' . $this->driver_option_wait_timeout; } diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index 6cab71c1db..d121a87d34 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -31,7 +31,12 @@ class Initializer { return; } - $this->setupDB(); + try { + $this->setupDB(); + } catch(\Exception $e) { + $this->handleFailedInitialization($e); + return; + } // activation function register_activation_hook( @@ -232,7 +237,10 @@ class Initializer { } function handleFailedInitialization($message) { - Menu::addErrorPage(); + // Check if we are able to add pages at this point + if (function_exists('wp_get_current_user')) { + Menu::addErrorPage(); + } return WPNotice::displayError($message); } -} \ No newline at end of file +}