From 13e0a6556ffa9e0b3257f08d78042a8133055ea3 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 19 Feb 2015 16:39:48 +0100 Subject: Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284) --- CHANGELOG | 1 + program/lib/Roundcube/rcube_mime.php | 2 +- tests/Framework/Mime.php | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index f70c0b6e9..5a3da30e9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ CHANGELOG Roundcube Webmail - Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet - Fix setting max packet size for DB caches and check packet size also in shared cache - Fix needless security warning on BMP attachments display (#1490282) +- Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284) RELEASE 1.1.0 ------------- diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php index 3f2fcc330..e9cab6107 100644 --- a/program/lib/Roundcube/rcube_mime.php +++ b/program/lib/Roundcube/rcube_mime.php @@ -520,7 +520,7 @@ class rcube_mime // remove space-stuffing $line = preg_replace('/^ /', '', $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 43773f1a5..4cf84cbb0 100644 --- a/tests/Framework/Mime.php +++ b/tests/Framework/Mime.php @@ -155,6 +155,21 @@ class Framework_Mime extends PHPUnit_Framework_TestCase $this->assertEquals($unfolded, rcube_mime::unfold_flowed($flowed), "Test correct unfolding of quoted lines"); } + /** + * 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() */ -- cgit v1.2.3