From ab05ee25c1d38c884790337796f7c941e28d36d9 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Sun, 2 Jun 2013 14:44:09 +0200 Subject: [PATCH] Fix backward copat. with cached values serialized but not base64-encoded (#1489142) --- program/lib/Roundcube/rcube_db.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php index adfe3ca3c..b3f549b23 100644 --- a/program/lib/Roundcube/rcube_db.php +++ b/program/lib/Roundcube/rcube_db.php @@ -829,9 +829,14 @@ class rcube_db */ public static function decode($input, $serialized = false) { + // use Base64 encoding to workaround issues with invalid + // or null characters in serialized string (#1489142) if ($serialized) { - // use Base64 encoding to workaround issues with invalid - // or null characters in serialized string (#1489142) + // Keep backward compatybility where base64 wasn't used + if (strpos(substr($input, 0, 16), ':') !== false) { + return self::decode(@unserialize($input)); + } + return @unserialize(base64_decode($input)); }