From fe3a1d60a53920029932287629ee0afd4df729aa Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 09 Mar 2012 02:43:19 -0500
Subject: [PATCH] - Fix encoding of attachment with comma in name (#1488389)

---
 program/lib/Mail/mime.php     |    4 ++--
 CHANGELOG                     |    1 +
 program/lib/Mail/mimePart.php |    6 +++---
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 94f5375..5a704d7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix encoding of attachment with comma in name (#1488389)
 - Scroll long lists on drag&drop (#1485946)
 - Fix handling of % character in IMAP protocol (#1488382)
 - Fix duplicate names handling in addressbook searches (#1488375)
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
index c5dd305..cc72f5b 100644
--- a/program/lib/Mail/mime.php
+++ b/program/lib/Mail/mime.php
@@ -1142,8 +1142,8 @@
             ? $this->_build_params['eol'] : "\r\n";
 
         // add parameters
-        $token_regexp = '#([^\x21,\x23-\x27,\x2A,\x2B,\x2D'
-            . ',\x2E,\x30-\x39,\x41-\x5A,\x5E-\x7E])#';
+        $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
+            . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
         if (is_array($params)) {
             foreach ($params as $name => $value) {
                 if ($name == 'boundary') {
diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php
index 036ce74..a1cf111 100644
--- a/program/lib/Mail/mimePart.php
+++ b/program/lib/Mail/mimePart.php
@@ -639,8 +639,8 @@
         // RFC 2045:
         // value needs encoding if contains non-ASCII chars or is longer than 78 chars
         if (!preg_match('#[^\x20-\x7E]#', $value)) {
-            $token_regexp = '#([^\x21,\x23-\x27,\x2A,\x2B,\x2D'
-                . ',\x2E,\x30-\x39,\x41-\x5A,\x5E-\x7E])#';
+            $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
+                . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
             if (!preg_match($token_regexp, $value)) {
                 // token
                 if (strlen($name) + strlen($value) + 3 <= $maxLength) {
@@ -662,7 +662,7 @@
 
         // RFC2231:
         $encValue = preg_replace_callback(
-            '/([^\x21,\x23,\x24,\x26,\x2B,\x2D,\x2E,\x30-\x39,\x41-\x5A,\x5E-\x7E])/',
+            '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/',
             array($this, '_encodeReplaceCallback'), $value
         );
         $value = "$charset'$language'$encValue";

--
Gitblit v1.9.1