diff options
author | alecpl <alec@alec.pl> | 2011-04-19 08:23:31 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-04-19 08:23:31 +0000 |
commit | 968754b09ebc1b501d0840e8c4eb3d0f617a5080 (patch) | |
tree | 2109e417f3f34a9e7d51060c57d9ba39e34e06df | |
parent | 462de2d2028617c8464f174987785a92583313be (diff) |
- Fix regression in html conditional comments handling by washtml class
-rw-r--r-- | program/lib/washtml.php | 3 | ||||
-rw-r--r-- | tests/mailfunc.php | 16 | ||||
-rw-r--r-- | tests/src/htmlcom.txt | 16 |
3 files changed, 33 insertions, 2 deletions
diff --git a/program/lib/washtml.php b/program/lib/washtml.php index 0f8dc7ee6..e8befe835 100644 --- a/program/lib/washtml.php +++ b/program/lib/washtml.php @@ -273,7 +273,8 @@ class washtml $this->config['base_url'] = ''; // Remove invalid HTML comments (#1487759) - $html = preg_replace('/<!--[^->]*>/', '', $html); + // Don't remove valid conditional comments + $html = preg_replace('/<!--[^->[]*>/', '', $html); @$node->loadHTML($html); return $this->dumpHtml($node); diff --git a/tests/mailfunc.php b/tests/mailfunc.php index dc25f0ce4..5bf77b1df 100644 --- a/tests/mailfunc.php +++ b/tests/mailfunc.php @@ -121,7 +121,7 @@ class rcube_test_mailfunc extends UnitTestCase function test_mailto() { $part = $this->get_html_part('src/mailto.txt'); - + // render HTML in normal mode $html = rcmail_html4inline(rcmail_print_body($part, array('safe' => false)), 'foo'); @@ -131,4 +131,18 @@ class rcube_test_mailfunc extends UnitTestCase $this->assertPattern('|'.preg_quote($mailto, '|').'|', $html, "Extended mailto links"); } + /** + * Test the elimination of HTML comments + */ + function test_html_comments() + { + $part = $this->get_html_part('src/htmlcom.txt'); + $washed = rcmail_print_body($part, array('safe' => true)); + + // #1487759 + $this->assertPattern('|<p>test1</p>|', $washed, "Buggy HTML comments"); + // but conditional comments (<!--[if ...) should be removed + $this->assertNoPattern('|<p>test2</p>|', $washed, "Conditional HTML comments"); + } + } diff --git a/tests/src/htmlcom.txt b/tests/src/htmlcom.txt new file mode 100644 index 000000000..b3eb1de79 --- /dev/null +++ b/tests/src/htmlcom.txt @@ -0,0 +1,16 @@ +<html> +<head> +<title>Roundcube Test Message</title> +</head> +<body> + +<!--REF> +<p>test1</p> +<!--DEREF> + +<!--[if gte mso 9]><xml> + <p>test2</p> +</xml><![endif]--> + +</body> +</html>
\ No newline at end of file |