summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-04-19 08:23:31 +0000
committeralecpl <alec@alec.pl>2011-04-19 08:23:31 +0000
commit968754b09ebc1b501d0840e8c4eb3d0f617a5080 (patch)
tree2109e417f3f34a9e7d51060c57d9ba39e34e06df
parent462de2d2028617c8464f174987785a92583313be (diff)
- Fix regression in html conditional comments handling by washtml class
-rw-r--r--program/lib/washtml.php3
-rw-r--r--tests/mailfunc.php16
-rw-r--r--tests/src/htmlcom.txt16
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