- Improved handling of some malformed values encoded with quoted-printable (#1488232)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Improved handling of some malformed values encoded with quoted-printable (#1488232) |
| | | - Add possibility to do LDAP bind before searching for bind DN |
| | | - Fix handling of empty <U> tags in HTML messages (#1488225) |
| | | - Add content filter for embedded attachments to protect from XSS on IE (#1487895) |
| | |
| | | $input = preg_replace("/\?=\s+=\?/", '?==?', $input); |
| | | |
| | | // encoded-word regexp |
| | | $re = '/=\?([^?]+)\?([BbQq])\?([^?\n]*)\?=/'; |
| | | $re = '/=\?([^?]+)\?([BbQq])\?([^\n]*?)\?=/'; |
| | | |
| | | // Find all RFC2047's encoded words |
| | | if (preg_match_all($re, $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Test decoding of header values |
| | | * Uses rcube_imap::decode_mime_string() |
| | | */ |
| | | function test_header_decode_qp() |
| | | { |
| | | $test = array( |
| | | // #1488232: invalid character "?" |
| | | 'quoted-printable (1)' => array( |
| | | 'in' => '=?utf-8?Q?Certifica=C3=A7=C3=A3??=', |
| | | 'out' => 'Certifica=C3=A7=C3=A3?', |
| | | ), |
| | | 'quoted-printable (2)' => array( |
| | | 'in' => '=?utf-8?Q?Certifica=?= =?utf-8?Q?C3=A7=C3=A3?=', |
| | | 'out' => 'Certifica=C3=A7=C3=A3', |
| | | ), |
| | | 'quoted-printable (3)' => array( |
| | | 'in' => '=?utf-8?Q??= =?utf-8?Q??=', |
| | | 'out' => '', |
| | | ), |
| | | 'quoted-printable (4)' => array( |
| | | 'in' => '=?utf-8?Q??= a =?utf-8?Q??=', |
| | | 'out' => ' a ', |
| | | ), |
| | | 'quoted-printable (5)' => array( |
| | | 'in' => '=?utf-8?Q?a?= =?utf-8?Q?b?=', |
| | | 'out' => 'ab', |
| | | ), |
| | | 'quoted-printable (6)' => array( |
| | | 'in' => '=?utf-8?Q? ?= =?utf-8?Q?a?=', |
| | | 'out' => ' a', |
| | | ), |
| | | 'quoted-printable (7)' => array( |
| | | 'in' => '=?utf-8?Q?___?= =?utf-8?Q?a?=', |
| | | 'out' => ' a', |
| | | ), |
| | | ); |
| | | |
| | | foreach ($test as $idx => $item) { |
| | | $res = $this->app->imap->decode_mime_string($item['in'], 'UTF-8'); |
| | | $res = quoted_printable_encode($res); |
| | | |
| | | $this->assertEqual($item['out'], $res, "Header decoding for: " . $idx); |
| | | } |
| | | |
| | | } |
| | | } |