From 197203727417a03d87053a47e5aa5175a76e3e0b Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 17 Oct 2013 04:24:53 -0400
Subject: [PATCH] Fix vulnerability in handling _session argument of utils/save-prefs (#1489382)

---
 program/include/rcube_plugin.php |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/program/include/rcube_plugin.php b/program/include/rcube_plugin.php
index 0979137..550c842 100644
--- a/program/include/rcube_plugin.php
+++ b/program/include/rcube_plugin.php
@@ -61,6 +61,14 @@
    */
   public $noframe = false;
 
+  /**
+   * A list of config option names that can be modified
+   * by the user via user interface (with save-pref command)
+   *
+   * @var array
+   */
+  public $allowed_prefs;
+
   protected $home;
   protected $urlbase;
   private $mytask;
@@ -147,8 +155,11 @@
     ob_start();
 
     foreach (array('en_US', $lang) as $lng) {
-      @include($locdir . $lng . '.inc');
-      $texts = (array)$labels + (array)$messages + (array)$texts;
+      $fpath = $locdir . $lng . '.inc';
+      if (is_file($fpath) && is_readable($fpath)) {
+        include($fpath);
+        $texts = (array)$labels + (array)$messages + (array)$texts;
+      }
     }
 
     ob_end_clean();
@@ -283,14 +294,14 @@
     else
       return $fn;
   }
-  
+
   /**
    * Provide path to the currently selected skin folder within the plugin directory
    * with a fallback to the default skin folder.
    *
    * @return string Skin path relative to plugins directory
    */
-  protected function local_skin_path()
+  public function local_skin_path()
   {
       $skin_path = 'skins/'.$this->api->config->get('skin');
       if (!is_dir(realpath(slashify($this->home) . $skin_path)))

--
Gitblit v1.9.1