1
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2025-07-30 19:00:10 +02:00

Fix possible infinite loop by incrementing everybody's offsets. Add printTokens debugger function. Refine Linkify parent node checks (also check excludes, although technically later steps will catch it!)

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1218 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang
2007-06-24 03:34:33 +00:00
parent 62c6d93b6d
commit 269268b843
4 changed files with 22 additions and 4 deletions

View File

@@ -19,7 +19,7 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
} else {
$parent = $definition->info_parent_def;
}
if (!isset($parent->child->elements['a'])) {
if (!isset($parent->child->elements['a']) || isset($parent->excludes['a'])) {
// parent element does not allow link elements, don't bother
return;
}
@@ -29,8 +29,8 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
// "google.com"
return;
}
// there is/are URL(s). Let's split the string:
// there is/are URL(s). Let's split the string:
$bits = preg_split('#((?:https?|ftp)://[^\s\'"<>()]+)#S', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
$token = array();

View File

@@ -256,8 +256,9 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$injector =& $context->get('Injector');
$current_injector =& $context->get('CurrentInjector');
if (isset($injector[$current_injector])) {
$injector_skip[$current_injector] = count($token);
$offset = count($token);
for ($i = 0; $i <= $current_injector; $i++) {
$injector_skip[$i] += $offset;
}
} elseif ($token) {