From 1c25366406b19324e0419bb3e4798b6e50b37f4e Mon Sep 17 00:00:00 2001 From: alecpl Date: Wed, 25 Jun 2008 06:33:10 +0000 Subject: [PATCH] Patched Mail/mimePart.php (http://pear.php.net/bugs/bug.php?id=14232) --- CHANGELOG | 4 ++++ program/lib/Mail/mimePart.php | 7 ++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b0ec287e3..9bde8fb7c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,10 @@ CHANGELOG RoundCube Webmail --------------------------- +2008/06/24 (alec) +---------- +- Patched Mail/MimePart.php (http://pear.php.net/bugs/bug.php?id=14232) + 2008/06/24 (alec) ---------- - Allow trash/junk subfolders to be purged (#1485085) diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php index bb55ba9ca..5cfdfa494 100644 --- a/program/lib/Mail/mimePart.php +++ b/program/lib/Mail/mimePart.php @@ -398,7 +398,7 @@ class Mail_mimePart { //is not any of the defaults, we need to encode the value. $shouldEncode = 0; $secondAsterisk = ''; - if (preg_match('#([\x80-\xFF]){1}#', $value)) { + if (preg_match('#([ \x80-\xFF \*\'\\%\t(\)\<\>\@\,\;\:\\\"/\[\]\?\=]){1}#', $value)) { $shouldEncode = 1; } elseif ($charset && (strtolower($charset) != 'us-ascii')) { $shouldEncode = 1; @@ -406,10 +406,7 @@ class Mail_mimePart { $shouldEncode = 1; } if ($shouldEncode) { - $search = array('%', ' ', "\t"); - $replace = array('%25', '%20', '%09'); - $encValue = str_replace($search, $replace, $value); - $encValue = preg_replace('#([\x80-\xFF])#e', '"%" . strtoupper(dechex(ord("\1")))', $encValue); + $encValue = preg_replace('#([\x80-\xFF \*\'\%\t\(\)\<\>\@\,\;\:\\\"/\[\]\?\=])#e', '"%" . strtoupper(dechex(ord("\1")))', $value); $value = "$charset'$language'$encValue"; $secondAsterisk = '*'; }