From 5bc800f946e39ae0c5afcca79d6ae0af561fc536 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Tue, 05 Feb 2013 10:26:57 -0500 Subject: [PATCH] Merge branch 'master' of github.com:roundcube/roundcubemail --- program/lib/Roundcube/rcube.php | 7 +++++-- program/lib/Roundcube/rcube_washtml.php | 3 ++- tests/Framework/Washtml.php | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php index a914ae6..3ae511e 100644 --- a/program/lib/Roundcube/rcube.php +++ b/program/lib/Roundcube/rcube.php @@ -1073,14 +1073,17 @@ { // handle PHP exceptions if (is_object($arg) && is_a($arg, 'Exception')) { - $err = array( + $arg = array( 'type' => 'php', 'code' => $arg->getCode(), 'line' => $arg->getLine(), 'file' => $arg->getFile(), 'message' => $arg->getMessage(), ); - $arg = $err; + } + + if (empty($arg['code'])) { + $arg['code'] = 500; } // installer diff --git a/program/lib/Roundcube/rcube_washtml.php b/program/lib/Roundcube/rcube_washtml.php index 715c460..2a26141 100644 --- a/program/lib/Roundcube/rcube_washtml.php +++ b/program/lib/Roundcube/rcube_washtml.php @@ -240,7 +240,8 @@ $value = $node->getAttribute($key); if (isset($this->_html_attribs[$key]) || - ($key == 'href' && !preg_match('!^(javascript|vbscript|data:text)!i', $value) + ($key == 'href' && ($value = trim($value)) + && !preg_match('!^(javascript|vbscript|data:text)!i', $value) && preg_match('!^([a-z][a-z0-9.+-]+:|//|#).+!i', $value)) ) { $t .= ' ' . $key . '="' . htmlspecialchars($value, ENT_QUOTES) . '"'; diff --git a/tests/Framework/Washtml.php b/tests/Framework/Washtml.php index 088ac4a..6f4aa97 100644 --- a/tests/Framework/Washtml.php +++ b/tests/Framework/Washtml.php @@ -25,4 +25,18 @@ $this->assertNotRegExp('/vbscript:/', $washed, "Remove vbscript: links"); } + /** + * Test fixing of invalid href (#1488940) + */ + function test_href() + { + $html = "<p><a href=\"\nhttp://test.com\n\">Firefox</a>"; + + $washer = new rcube_washtml; + + $washed = $washer->wash($html); + + $this->assertRegExp('|href="http://test.com">|', $washed, "Link href with newlines (#1488940)"); + } + } -- Gitblit v1.9.1