From 968754b09ebc1b501d0840e8c4eb3d0f617a5080 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 19 Apr 2011 04:23:31 -0400
Subject: [PATCH] - Fix regression in html conditional comments handling by washtml class
---
tests/src/htmlcom.txt | 16 ++++++++++++++++
tests/mailfunc.php | 16 +++++++++++++++-
program/lib/washtml.php | 3 ++-
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/program/lib/washtml.php b/program/lib/washtml.php
index 0f8dc7e..e8befe8 100644
--- a/program/lib/washtml.php
+++ b/program/lib/washtml.php
@@ -273,7 +273,8 @@
$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 dc25f0c..5bf77b1 100644
--- a/tests/mailfunc.php
+++ b/tests/mailfunc.php
@@ -121,7 +121,7 @@
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 @@
$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 0000000..b3eb1de
--- /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
--
Gitblit v1.9.1