alecpl
2011-04-19 968754b09ebc1b501d0840e8c4eb3d0f617a5080
- Fix regression in html conditional comments handling by washtml class


1 files added
2 files modified
35 ■■■■■ changed files
program/lib/washtml.php 3 ●●●● patch | view | raw | blame | history
tests/mailfunc.php 16 ●●●●● patch | view | raw | blame | history
tests/src/htmlcom.txt 16 ●●●●● patch | view | raw | blame | history
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);
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");
  }
}
tests/src/htmlcom.txt
New file
@@ -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>