From bd0551b22076b82a6d49e9f7a2b2e0c90a1b2326 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Fri, 05 Feb 2016 07:25:27 -0500 Subject: [PATCH] Secure also downloads of addressbook exports, managesieve script exports and Enigma keys exports --- program/lib/Roundcube/rcube_db.php | 31 ++++++++++++++++++------------- 1 files changed, 18 insertions(+), 13 deletions(-) diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php index a31b200..ba3acf6 100644 --- a/program/lib/Roundcube/rcube_db.php +++ b/program/lib/Roundcube/rcube_db.php @@ -1,6 +1,6 @@ <?php -/* +/** +-----------------------------------------------------------------------+ | This file is part of the Roundcube Webmail client | | Copyright (C) 2005-2012, The Roundcube Dev Team | @@ -148,10 +148,6 @@ // Get database specific connection options $dsn_string = $this->dsn_string($dsn); $dsn_options = $this->dsn_options($dsn); - - if ($this->db_pconn) { - $dsn_options[PDO::ATTR_PERSISTENT] = true; - } // Connect try { @@ -691,14 +687,11 @@ { // get tables if not cached if ($this->tables === null) { - $q = $this->query('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME'); + $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES" + . " WHERE TABLE_TYPE = 'BASE TABLE'" + . " ORDER BY TABLE_NAME"); - if ($q) { - $this->tables = $q->fetchAll(PDO::FETCH_COLUMN, 0); - } - else { - $this->tables = array(); - } + $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : array(); } return $this->tables; @@ -1190,7 +1183,7 @@ } // process the different protocol options - $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp'; + $parsed['protocol'] = $proto ?: 'tcp'; $proto_opts = rawurldecode($proto_opts); if (strpos($proto_opts, ':') !== false) { list($proto_opts, $parsed['port']) = explode(':', $proto_opts); @@ -1274,6 +1267,18 @@ { $result = array(); + if ($this->db_pconn) { + $result[PDO::ATTR_PERSISTENT] = true; + } + + if (!empty($dsn['prefetch'])) { + $result[PDO::ATTR_PREFETCH] = (int) $dsn['prefetch']; + } + + if (!empty($dsn['timeout'])) { + $result[PDO::ATTR_TIMEOUT] = (int) $dsn['timeout']; + } + return $result; } -- Gitblit v1.9.1