From ac93924b1f7b90afea4b92bf352120df67538ea5 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 19 Feb 2015 10:44:36 -0500
Subject: [PATCH] Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284)

---
 CHANGELOG                            |    1 +
 tests/Framework/Mime.php             |   15 +++++++++++++++
 program/lib/Roundcube/rcube_mime.php |    2 +-
 3 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 1933a07..474117f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,7 @@
 
 - Make SMTP error log more verbose - include server response and error code
 - Fix security issue in DBMail driver of password plugin (#1490261)
+- Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284)
 
 RELEASE 1.0.5
 -------------
diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php
index 4d43a89..7936a41 100644
--- a/program/lib/Roundcube/rcube_mime.php
+++ b/program/lib/Roundcube/rcube_mime.php
@@ -523,7 +523,7 @@
                     // remove space-stuffing
                     $line = preg_replace('/^\s/', '', $line);
 
-                    if (isset($text[$last]) && $line
+                    if (isset($text[$last]) && $line && !$q_level
                         && $text[$last] != '-- '
                         && $text[$last][strlen($text[$last])-1] == ' '
                     ) {
diff --git a/tests/Framework/Mime.php b/tests/Framework/Mime.php
index 43773f1..4cf84cb 100644
--- a/tests/Framework/Mime.php
+++ b/tests/Framework/Mime.php
@@ -156,6 +156,21 @@
     }
 
     /**
+     * Test format=flowed unfolding (#1490284)
+     */
+    function test_unfold_flowed2()
+    {
+        $flowed   = "> culpa qui officia deserunt mollit anim id est laborum.\r\n"
+                    ."> \r\n"
+                    ."Sed ut perspiciatis unde omnis iste natus error \r\nsit voluptatem";
+        $unfolded = "> culpa qui officia deserunt mollit anim id est laborum.\r\n"
+                    ."> \r\n"
+                    ."Sed ut perspiciatis unde omnis iste natus error sit voluptatem";
+
+        $this->assertEquals($unfolded, rcube_mime::unfold_flowed($flowed), "Test correct unfolding of quoted lines [2]");
+    }
+
+    /**
      * Test wordwrap()
      */
     function test_wordwrap()

--
Gitblit v1.9.1