- Fix regression in html conditional comments handling by washtml class

release-0.6
alecpl 13 years ago
parent 462de2d202
commit 968754b09e

@ -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);

@ -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");
}
}

@ -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>
Loading…
Cancel
Save