summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-01-31 19:07:45 +0000
committerDries Buytaert <dries@buytaert.net>2009-01-31 19:07:45 +0000
commitf12b1b637f748051c1fd9e260881208092bf913b (patch)
treec99f48f2d9a2d8ca7b1601c5902efef4db0f7273
parent610bc6f7edf0f30dacbae55a7a14c1e3f0898472 (diff)
downloadbrdo-f12b1b637f748051c1fd9e260881208092bf913b.tar.gz
brdo-f12b1b637f748051c1fd9e260881208092bf913b.tar.bz2
- Patch #354812 by catch, mfer: filter_xss_bad_protocol is called hundreds of times on some pages.
-rw-r--r--includes/common.inc2
-rw-r--r--modules/simpletest/tests/common.test25
2 files changed, 26 insertions, 1 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 95bc9fc33..09bd204e4 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -1836,7 +1836,7 @@ function l($text, $path, array $options = array()) {
$options['attributes']['title'] = strip_tags($options['attributes']['title']);
}
- return '<a href="' . check_url(url($path, $options)) . '"' . drupal_attributes($options['attributes']) . '>' . ($options['html'] ? $text : check_plain($text)) . '</a>';
+ return '<a href="' . url($path, $options) . '"' . drupal_attributes($options['attributes']) . '>' . ($options['html'] ? $text : check_plain($text)) . '</a>';
}
/**
diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test
index 5f039660f..a6f1053e6 100644
--- a/modules/simpletest/tests/common.test
+++ b/modules/simpletest/tests/common.test
@@ -1,6 +1,31 @@
<?php
// $Id$
+/**
+ * Tests for the l() function.
+ */
+class CommonLUnitTest extends DrupalWebTestCase {
+
+ function getInfo() {
+ return array(
+ 'name' => t('Tests for the l() function'),
+ 'description' => t('Confirm that url() works correctly with various input.'),
+ 'group' => t('System'),
+ );
+ }
+
+ /**
+ * Confirm that invalid text given as $path is filtered.
+ */
+ function testLXSS() {
+ $text = $this->randomName();
+ $path = "<SCRIPT>alert('XSS')</SCRIPT>";
+ $link = l($text, $path);
+ $sanitized_path = check_url(url($path));
+ $this->assertTrue(strpos($link, $sanitized_path) != FALSE, t('XSS attack @path was filtered', array('@path' => $path)));
+ }
+}
+
class CommonSizeTestCase extends DrupalWebTestCase {
protected $exact_test_cases;
protected $rounded_test_cases;