From f06aa8058b7e32ba32d4551074b6e0b8a300f751 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Mon, 21 Oct 2013 15:02:40 -0400 Subject: [PATCH] Bump version after security fix --- program/include/rcube_charset.php | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/program/include/rcube_charset.php b/program/include/rcube_charset.php index e52e82e..2c8d3a0 100644 --- a/program/include/rcube_charset.php +++ b/program/include/rcube_charset.php @@ -78,7 +78,7 @@ * @param int Level of the error * @param string Error message */ - public function error_handler($errno, $errstr) + public static function error_handler($errno, $errstr) { throw new ErrorException($errstr, 0, $errno); } @@ -89,7 +89,7 @@ * Sometimes charset string is malformed, there are also charset aliases * but we need strict names for charset conversion (specially utf8 class) * - * @param string Input charset name + * @param string $input Input charset name * * @return string The validated charset name */ @@ -182,9 +182,15 @@ static $mbstring_list = null; static $conv = null; - $to = empty($to) ? strtoupper(RCMAIL_CHARSET) : self::parse($to); + $to = empty($to) ? strtoupper(RCMAIL_CHARSET) : $to; $from = self::parse($from); + // It is a common case when UTF-16 charset is used with US-ASCII content (#1488654) + // In that case we can just skip the conversion (use UTF-8) + if ($from == 'UTF-16' && !preg_match('/[^\x00-\x7F]/', $str)) { + $from = 'UTF-8'; + } + if ($from == $to || empty($str) || empty($from)) { return $str; } -- Gitblit v1.9.1