From 539cd47824ec6b03b44f9f7c5af8a1e60df0458b Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 29 Sep 2005 16:30:10 -0400
Subject: [PATCH] Fix for URL injection vulnerability (Bug #1307966)

---
 index.php               |   16 ++++++++++++++--
 program/steps/error.inc |    2 +-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/index.php b/index.php
index 19623aa..bdccd37 100644
--- a/index.php
+++ b/index.php
@@ -267,7 +267,19 @@
   }
 
 
-// parse main template
-parse_template($_task);
+// only allow these templates to be included
+$valid_tasks = array('mail','settings','addressbook');
 
+// parse main template
+if (in_array($_task, $valid_tasks))
+  parse_template($_task);
+
+
+// if we arrive here, something went wrong
+raise_error(array('code' => 404,
+                  'type' => 'php',
+                  'line' => __LINE__,
+                  'file' => __FILE__,
+                  'message' => "Invalid request"), TRUE, TRUE);
+                      
 ?>
\ No newline at end of file
diff --git a/program/steps/error.inc b/program/steps/error.inc
index efe3040..9e5757d 100644
--- a/program/steps/error.inc
+++ b/program/steps/error.inc
@@ -52,7 +52,7 @@
 else if ($ERROR_CODE==404)
   {
   $__error_title = "REQUEST FAILED/FILE NOT FOUND";
-  $request_url = $GLOBALS['HTTP_HOST'].$GLOBALS['REQUEST_URI'];
+  $request_url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
   $__error_text  = <<<EOF
 The requested page was not found!<br />
 Please contact your server-administrator.

--
Gitblit v1.9.1