KSES: Use correct global in wp_kses_xml_named_entities().

This fixes a discrepancy where the the global name used in the function did not match the one declared at the beginning of `kses.php`, and ensures that the function gets the correct array of allowed XML entity names.

Includes unit tests.

Follow-up to [48072].

Props ovidiul, costdev, peterwilsoncc, SergeyBiryukov.
Fixes #54060.

git-svn-id: https://develop.svn.wordpress.org/trunk@52229 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov
2021-11-21 17:15:26 +00:00
parent d55cf2b71e
commit fcbf4617f9
2 changed files with 111 additions and 5 deletions

View File

@@ -459,7 +459,7 @@ if ( ! CUSTOM_TAGS ) {
);
/**
* @var string[] $allowedentitynames Array of KSES allowed HTML entitity names.
* @var string[] $allowedentitynames Array of KSES allowed HTML entity names.
* @since 1.0.0
*/
$allowedentitynames = array(
@@ -719,10 +719,10 @@ if ( ! CUSTOM_TAGS ) {
);
/**
* @var string[] $allowedxmlentitynames Array of KSES allowed XML entitity names.
* @var string[] $allowedxmlentitynames Array of KSES allowed XML entity names.
* @since 5.5.0
*/
$allowedxmlnamedentities = array(
$allowedxmlentitynames = array(
'amp',
'lt',
'gt',
@@ -1906,7 +1906,7 @@ function wp_kses_named_entities( $matches ) {
* @return string Correctly encoded entity.
*/
function wp_kses_xml_named_entities( $matches ) {
global $allowedentitynames, $allowedxmlnamedentities;
global $allowedentitynames, $allowedxmlentitynames;
if ( empty( $matches[1] ) ) {
return '';
@@ -1914,7 +1914,7 @@ function wp_kses_xml_named_entities( $matches ) {
$i = $matches[1];
if ( in_array( $i, $allowedxmlnamedentities, true ) ) {
if ( in_array( $i, $allowedxmlentitynames, true ) ) {
return "&$i;";
} elseif ( in_array( $i, $allowedentitynames, true ) ) {
return html_entity_decode( "&$i;", ENT_HTML5 );