From fdd583253cae8537aba26ed13a20e303fb687488 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Fri, 1 Sep 2006 16:40:14 +0000 Subject: [PATCH] Fixed rejection of case-insensitive configuration values when there is a set of allowed values. This manifested in %Core.Encoding. git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@367 48356398-32a2-884e-a903-53898d9a118a --- NEWS | 2 ++ library/HTMLPurifier/Config.php | 4 ++-- library/HTMLPurifier/Encoder.php | 5 +++++ tests/HTMLPurifier/ConfigTest.php | 11 +++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 7ae5b345..c8fbeed8 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,8 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier 1.0.1, unknown release date - Fixed slight bug in DOMLex attribute parsing +- Fixed rejection of case-insensitive configuration values when there is a + set of allowed values. This manifested in %Core.Encoding. 1.0.0, released 2006-09-01 - Fixed broken numeric entity conversion diff --git a/library/HTMLPurifier/Config.php b/library/HTMLPurifier/Config.php index 040f0b3e..b7e0be04 100644 --- a/library/HTMLPurifier/Config.php +++ b/library/HTMLPurifier/Config.php @@ -80,6 +80,8 @@ class HTMLPurifier_Config E_USER_WARNING); return; } + $value = $this->def->validate($value, + $this->def->info[$namespace][$key]->type); if (is_string($value)) { // resolve value alias if defined if (isset($this->def->info[$namespace][$key]->aliases[$value])) { @@ -93,8 +95,6 @@ class HTMLPurifier_Config } } } - $value = $this->def->validate($value, - $this->def->info[$namespace][$key]->type); if ($value === null) { trigger_error('Value is of invalid type', E_USER_WARNING); return; diff --git a/library/HTMLPurifier/Encoder.php b/library/HTMLPurifier/Encoder.php index 7ed0eda1..da191f85 100644 --- a/library/HTMLPurifier/Encoder.php +++ b/library/HTMLPurifier/Encoder.php @@ -23,6 +23,11 @@ if ( !function_exists('iconv') ) { 'iso-8859-1' ) ); + HTMLPurifier_ConfigDef::defineValueAliases( + 'Core', 'Encoding', array( + 'iso8859-1' => 'iso-8859-1' + ) + ); } /** diff --git a/tests/HTMLPurifier/ConfigTest.php b/tests/HTMLPurifier/ConfigTest.php index 7421a0c9..00ef4c01 100644 --- a/tests/HTMLPurifier/ConfigTest.php +++ b/tests/HTMLPurifier/ConfigTest.php @@ -32,6 +32,9 @@ class HTMLPurifier_ConfigTest extends UnitTestCase HTMLPurifier_ConfigDef::define( 'Extension', 'Pert', 'foo', 'string', 'A string directive.' ); + HTMLPurifier_ConfigDef::define( + 'Core', 'Encoding', 'utf-8', 'istring', 'Case insensitivity!' + ); HTMLPurifier_ConfigDef::defineAllowedValues( 'Extension', 'Pert', array('foo', 'moo') @@ -39,6 +42,9 @@ class HTMLPurifier_ConfigTest extends UnitTestCase HTMLPurifier_ConfigDef::defineValueAliases( 'Extension', 'Pert', array('cow' => 'moo') ); + HTMLPurifier_ConfigDef::defineAllowedValues( + 'Core', 'Encoding', array('utf-8', 'iso-8859-1') + ); $config = HTMLPurifier_Config::createDefault(); @@ -80,6 +86,11 @@ class HTMLPurifier_ConfigTest extends UnitTestCase $this->assertNoErrors(); $this->assertIdentical($config->get('Extension', 'Pert'), 'moo'); + // case-insensitive attempt to set value that is allowed + $config->set('Core', 'Encoding', 'ISO-8859-1'); + $this->assertNoErrors(); + $this->assertIdentical($config->get('Core', 'Encoding'), 'iso-8859-1'); + } }