From ace851722e8ada8810dfc65bdc3c1499b2145354 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 12 Oct 2010 14:03:02 -0400
Subject: [PATCH] - Prevent from infinite redirect in case of broken session (#1487028)

---
 program/steps/mail/compose.inc |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 1b39b588..88fa425 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -33,9 +33,17 @@
 // Since there are many ways to leave the compose page improperly, it seems necessary to clean-up an old
 // compose when a "new/forward/reply/draft" is called - otherwise the old session attachments will appear
 
-if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_value('_id', RCUBE_INPUT_GET))
+$MESSAGE_ID = get_input_value('_id', RCUBE_INPUT_GET);
+if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != $MESSAGE_ID)
 {
   rcmail_compose_cleanup();
+
+  // Infinite redirect prevention in case of broken session (#1487028)
+  if ($MESSAGE_ID)
+    raise_error(array('code' => 500, 'type' => 'php',
+      'file' => __FILE__, 'line' => __LINE__,
+      'message' => "Invalid session"), true, true);
+
   $_SESSION['compose'] = array(
     'id' => uniqid(mt_rand()),
     'param' => request2param(RCUBE_INPUT_GET),

--
Gitblit v1.9.1