aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2010-09-19 15:31:00 +0200
committerIgor Wiedler <igor@wiedler.ch>2010-09-19 15:31:00 +0200
commit55808e11c987b72b6c2d364d4f17e11dfbbebc71 (patch)
tree683c270d30b4b31c5918efabc5e85236ac7065c6
parent204ee4714b2a0be1513e6a30b255477f39dac5cb (diff)
downloadforums-55808e11c987b72b6c2d364d4f17e11dfbbebc71.tar
forums-55808e11c987b72b6c2d364d4f17e11dfbbebc71.tar.gz
forums-55808e11c987b72b6c2d364d4f17e11dfbbebc71.tar.bz2
forums-55808e11c987b72b6c2d364d4f17e11dfbbebc71.tar.xz
forums-55808e11c987b72b6c2d364d4f17e11dfbbebc71.zip
[feature/request-class] Prevent recursive_set_var from applying htmlspecialchars twice
PHPBB3-9716
-rw-r--r--phpBB/includes/request/type_cast_helper.php2
-rw-r--r--tests/request/type_cast_helper.php21
2 files changed, 22 insertions, 1 deletions
diff --git a/phpBB/includes/request/type_cast_helper.php b/phpBB/includes/request/type_cast_helper.php
index c39bbebe01..29855a9804 100644
--- a/phpBB/includes/request/type_cast_helper.php
+++ b/phpBB/includes/request/type_cast_helper.php
@@ -176,7 +176,7 @@ class phpbb_request_type_cast_helper implements phpbb_request_type_cast_helper_i
$this->set_var($k, $k, $key_type, $multibyte, $multibyte);
$this->recursive_set_var($v, $default_value, $multibyte);
- $this->set_var($var[$k], $v, $value_type, $multibyte);
+ $var[$k] = $v;
}
}
}
diff --git a/tests/request/type_cast_helper.php b/tests/request/type_cast_helper.php
index 51687c186d..291b414fd3 100644
--- a/tests/request/type_cast_helper.php
+++ b/tests/request/type_cast_helper.php
@@ -9,6 +9,7 @@
*/
require_once 'test_framework/framework.php';
+require_once '../phpBB/includes/utf/utf_tools.php';
require_once '../phpBB/includes/request/type_cast_helper_interface.php';
require_once '../phpBB/includes/request/type_cast_helper.php';
@@ -30,4 +31,24 @@ class phpbb_type_cast_helper_test extends phpbb_test_case
$this->assertEquals($expected, $data);
}
+
+ public function test_simple_recursive_set_var()
+ {
+ $data = 'eviL<3';
+ $expected = 'eviL&lt;3';
+
+ $this->type_cast_helper->recursive_set_var($data, '', true);
+
+ $this->assertEquals($expected, $data);
+ }
+
+ public function test_nested_recursive_set_var()
+ {
+ $data = array('eviL<3');
+ $expected = array('eviL&lt;3');
+
+ $this->type_cast_helper->recursive_set_var($data, array(0 => ''), true);
+
+ $this->assertEquals($expected, $data);
+ }
}