diff --git a/CHANGELOG b/CHANGELOG index b6c1c249e..354196233 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ CHANGELOG Roundcube Webmail - Add Preferences > Mailbox View > Main Options > Layout (#5829) - Password: Fix compatibility with PHP 7+ in cpanel_webmail driver (#5820) +- Managesieve: Fix parsing dot-staffed lines in multiline text (#5838) - Fix decoding non-ascii attachment names from TNEF attachments (#5646, #5799) - Fix uninitialized string offset in rcube_utils::bin2ascii() and make sure rcube_utils::random_bytes() result has always requested length (#5788) - Fix bug where HTML messages with @media styles could moddify style of page body (#5811) diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog index daa817725..bac149f2d 100644 --- a/plugins/managesieve/Changelog +++ b/plugins/managesieve/Changelog @@ -1,3 +1,5 @@ +- Fix parsing dot-staffed lines in multiline text (#5838) + * version 8.9 [2017-05-22] ----------------------------------------------------------- - Fix handling of scripts with nested rules (#5540) diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php index 774be4623..73b888453 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php @@ -1277,11 +1277,13 @@ class rcube_sieve_script $text .= substr($str, $position, $pos - $position); $position = $pos + 2; - if ($str[$pos] == "\n" - || ($str[$pos] == "\r" && $str[$pos + 1] == "\n") + if ($str[$position] == "\n" + || ($str[$position] == "\r" && $str[$position + 1] == "\n") ) { break; } + + $text .= "\n."; } // remove dot-stuffing diff --git a/plugins/managesieve/tests/src/parser_vacation b/plugins/managesieve/tests/src/parser_vacation index 93026db45..8603d37c4 100644 --- a/plugins/managesieve/tests/src/parser_vacation +++ b/plugins/managesieve/tests/src/parser_vacation @@ -5,6 +5,8 @@ if header :contains "Subject" "vacation" vacation :days 1 text: # test test test /* test */ +.. +..test test . ;