HTML API: Only stop on full matches for requested tag name.
An optimization pass on the HTML API left a bug in the `matches()` method, whereby it would falsely detect a tag name match if the found tag were a lexical subset of the requested tag. This occurred because of the use of `substr_compare()` without checking that the outer lengths matched. This patch resolves the bug by adding the length check. Developed in https://github.com/wordpress/wordpress-develop/pull/7189 Discussed in https://core.trac.wordpress.org/ticket/61545 Follow-up to [58613]. Props dmsnell, westonruter. See #61545. Built from https://develop.svn.wordpress.org/trunk@58893 git-svn-id: http://core.svn.wordpress.org/trunk@58289 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
9aaf4b144a
commit
f957219299
|
@ -4009,7 +4009,13 @@ class WP_HTML_Tag_Processor {
|
|||
}
|
||||
|
||||
// Does the tag name match the requested tag name in a case-insensitive manner?
|
||||
if ( isset( $this->sought_tag_name ) && 0 !== substr_compare( $this->html, $this->sought_tag_name, $this->tag_name_starts_at, $this->tag_name_length, true ) ) {
|
||||
if (
|
||||
isset( $this->sought_tag_name ) &&
|
||||
(
|
||||
strlen( $this->sought_tag_name ) !== $this->tag_name_length ||
|
||||
0 !== substr_compare( $this->html, $this->sought_tag_name, $this->tag_name_starts_at, $this->tag_name_length, true )
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '6.7-alpha-58892';
|
||||
$wp_version = '6.7-alpha-58893';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue