From b8ae0ecb22264b6a4dc8785c431a8d0556fa83bf Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 22 Nov 2011 03:36:29 -0500
Subject: [PATCH] - Fixed bug where session ID's length was limited to 40 characters. Since PHP5.3 it's possible   to set session.hash_function to any hash algorithm that would produce strings   up to 128 characters long (#1488196)

---
 CHANGELOG                |    1 +
 SQL/sqlite.update.sql    |   11 +++++++++++
 SQL/postgres.update.sql  |    2 ++
 SQL/mysql.update.sql     |    2 ++
 SQL/postgres.initial.sql |    2 +-
 SQL/mysql.initial.sql    |    2 +-
 SQL/sqlite.initial.sql   |    2 +-
 SQL/mssql.initial.sql    |    2 +-
 SQL/mssql.upgrade.sql    |    3 +++
 9 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 1dec34b..25aee7c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fixed bug where session ID's length was limited to 40 characters (#1488196)
 - Added About tab in Settings
 - TinyMCE:
   - updated to 3.4.6
diff --git a/SQL/mssql.initial.sql b/SQL/mssql.initial.sql
index a8d1a0b..c141141 100644
--- a/SQL/mssql.initial.sql
+++ b/SQL/mssql.initial.sql
@@ -81,7 +81,7 @@
 GO
 
 CREATE TABLE [dbo].[session] (
-	[sess_id] [varchar] (32) COLLATE Latin1_General_CI_AI NOT NULL ,
+	[sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
 	[created] [datetime] NOT NULL ,
 	[changed] [datetime] NULL ,
 	[ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL ,
diff --git a/SQL/mssql.upgrade.sql b/SQL/mssql.upgrade.sql
index 70cf34d..b479b16 100644
--- a/SQL/mssql.upgrade.sql
+++ b/SQL/mssql.upgrade.sql
@@ -239,3 +239,6 @@
     ON DELETE CASCADE ON UPDATE CASCADE
 GO
 
+ALTER TABLE [dbo].[session] ALTER COLUMN [sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL
+GO
+
diff --git a/SQL/mysql.initial.sql b/SQL/mysql.initial.sql
index 28a90f5..94679f2 100644
--- a/SQL/mysql.initial.sql
+++ b/SQL/mysql.initial.sql
@@ -6,7 +6,7 @@
 -- Table structure for table `session`
 
 CREATE TABLE `session` (
- `sess_id` varchar(40) NOT NULL,
+ `sess_id` varchar(128) NOT NULL,
  `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
  `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
  `ip` varchar(40) NOT NULL,
diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql
index 6604539..053649b 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -208,3 +208,5 @@
  INDEX `changed_index` (`changed`),
  PRIMARY KEY (`user_id`, `mailbox`, `uid`)
 ) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+ALTER TABLE `session` CHANGE `sess_id` `sess_id` varchar(128) NOT NULL;
diff --git a/SQL/postgres.initial.sql b/SQL/postgres.initial.sql
index 06ecad4..3710dac 100644
--- a/SQL/postgres.initial.sql
+++ b/SQL/postgres.initial.sql
@@ -37,7 +37,7 @@
 --
 
 CREATE TABLE "session" (
-    sess_id varchar(40) DEFAULT '' PRIMARY KEY,
+    sess_id varchar(128) DEFAULT '' PRIMARY KEY,
     created timestamp with time zone DEFAULT now() NOT NULL,
     changed timestamp with time zone DEFAULT now() NOT NULL,
     ip varchar(41) NOT NULL,
diff --git a/SQL/postgres.update.sql b/SQL/postgres.update.sql
index 2935cd4..d06ee84 100644
--- a/SQL/postgres.update.sql
+++ b/SQL/postgres.update.sql
@@ -165,3 +165,5 @@
 );
 
 CREATE INDEX cache_messages_changed_idx ON cache_messages (changed);
+
+ALTER TABLE "session" ALTER sess_id TYPE varchar(128);
diff --git a/SQL/sqlite.initial.sql b/SQL/sqlite.initial.sql
index 80c82a1..8c8da5c 100644
--- a/SQL/sqlite.initial.sql
+++ b/SQL/sqlite.initial.sql
@@ -110,7 +110,7 @@
 -- 
 
 CREATE TABLE session (
-  sess_id varchar(40) NOT NULL PRIMARY KEY,
+  sess_id varchar(128) NOT NULL PRIMARY KEY,
   created datetime NOT NULL default '0000-00-00 00:00:00',
   changed datetime NOT NULL default '0000-00-00 00:00:00',
   ip varchar(40) NOT NULL default '',
diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql
index 0193c7c..e6b3ee1 100644
--- a/SQL/sqlite.update.sql
+++ b/SQL/sqlite.update.sql
@@ -282,3 +282,14 @@
 );
 
 CREATE INDEX ix_cache_messages_changed ON cache_messages (changed);
+
+DROP TABLE session;
+CREATE TABLE session (
+  sess_id varchar(128) NOT NULL PRIMARY KEY,
+  created datetime NOT NULL default '0000-00-00 00:00:00',
+  changed datetime NOT NULL default '0000-00-00 00:00:00',
+  ip varchar(40) NOT NULL default '',
+  vars text NOT NULL
+);
+
+CREATE INDEX ix_session_changed ON session (changed);

--
Gitblit v1.9.1