Commit dd2179433c0 for php.net
commit dd2179433c0b85a5a841ab6658781f6339b85376
Author: Niels Dossche <7771979+ndossche@users.noreply.github.com>
Date: Tue Dec 2 20:09:31 2025 +0100
xml: Backport more deprecation fixes
diff --git a/ext/xml/compat.c b/ext/xml/compat.c
index 6bd69bec196..18a7beaea2d 100644
--- a/ext/xml/compat.c
+++ b/ext/xml/compat.c
@@ -473,13 +473,13 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m
}
php_libxml_sanitize_parse_ctxt_options(parser->parser);
- xmlCtxtUseOptions(parser->parser, XML_PARSE_OLDSAX);
+ xmlCtxtUseOptions(parser->parser, XML_PARSE_OLDSAX | XML_PARSE_NOENT);
- parser->parser->replaceEntities = 1;
parser->parser->wellFormed = 0;
if (sep != NULL) {
+ /* Note: sax2 flag will be set due to the magic number in `initialized` in php_xml_compat_handlers */
+ ZEND_ASSERT(parser->parser->sax->initialized == XML_SAX2_MAGIC);
parser->use_namespace = 1;
- parser->parser->sax2 = 1;
parser->_ns_separator = xmlStrdup(sep);
} else {
/* Reset flag as XML_SAX2_MAGIC is needed for xmlCreatePushParserCtxt
@@ -565,10 +565,14 @@ XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler en
PHP_XML_API int
XML_Parse(XML_Parser parser, const XML_Char *data, int data_len, int is_final)
{
- int error;
+ int error = xmlParseChunk(parser->parser, (char *) data, data_len, is_final);
- error = xmlParseChunk(parser->parser, (char *) data, data_len, is_final);
- return !error && parser->parser->lastError.level <= XML_ERR_WARNING;
+ if (!error) {
+ const xmlError *error_data = xmlCtxtGetLastError(parser->parser);
+ return !error_data || error_data->level <= XML_ERR_WARNING;
+ }
+
+ return 0;
}
PHP_XML_API int