From ca43df9fdd67c149c8cec4cee7a306b914fba394 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Wed, 26 Sep 2007 23:18:24 +0000 Subject: [PATCH] [2.1.3] Fatal error when tag (or any other element with required attributes) has 'id' attribute fixed, thanks NykO18 for reporting git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1420 48356398-32a2-884e-a903-53898d9a118a --- NEWS | 2 ++ library/HTMLPurifier.php | 6 ++++++ library/HTMLPurifier/Strategy/ValidateAttributes.php | 7 ------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index d864b4e3..f6c0ea5c 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,8 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier - Injector algorithm further refined: off-by-one error regarding skip counts for dormant injectors fixed - Corrective blockquote definition now enabled for HTML 4.01 Strict +- Fatal error when tag (or any other element with required attributes) + has 'id' attribute fixed, thanks NykO18 for reporting . %Core.AcceptFullDocuments renamed to %Core.ConvertDocumentToFragment to better communicate its purpose diff --git a/library/HTMLPurifier.php b/library/HTMLPurifier.php index 13d9cdc6..d06af2a5 100644 --- a/library/HTMLPurifier.php +++ b/library/HTMLPurifier.php @@ -157,6 +157,12 @@ class HTMLPurifier $context->register('ErrorCollector', $error_collector); } + // setup id_accumulator context, necessary due to the fact that + // AttrValidator can be called from many places + $id_accumulator = new HTMLPurifier_IDAccumulator(); + $id_accumulator->load($config->get('Attr', 'IDBlacklist')); + $context->register('IDAccumulator', $id_accumulator); + $html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context); for ($i = 0, $size = count($this->filters); $i < $size; $i++) { diff --git a/library/HTMLPurifier/Strategy/ValidateAttributes.php b/library/HTMLPurifier/Strategy/ValidateAttributes.php index 869f3fab..87772406 100644 --- a/library/HTMLPurifier/Strategy/ValidateAttributes.php +++ b/library/HTMLPurifier/Strategy/ValidateAttributes.php @@ -19,11 +19,6 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy function execute($tokens, $config, &$context) { - // setup id_accumulator context - $id_accumulator = new HTMLPurifier_IDAccumulator(); - $id_accumulator->load($config->get('Attr', 'IDBlacklist')); - $context->register('IDAccumulator', $id_accumulator); - // setup validator $validator = new HTMLPurifier_AttrValidator(); @@ -44,8 +39,6 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy $tokens[$key] = $token; // for PHP 4 } - - $context->destroy('IDAccumulator'); $context->destroy('CurrentToken'); return $tokens;