mirror of
https://github.com/php/php-src.git
synced 2024-12-12 11:23:53 +08:00
- Use our external entity loader only in the context of a PHP request.
This commit is contained in:
parent
7c63e28708
commit
dc32339c33
@ -674,6 +674,18 @@ is_string:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static xmlParserInputPtr _php_libxml_pre_ext_ent_loader(const char *URL,
|
||||
const char *ID, xmlParserCtxtPtr context)
|
||||
{
|
||||
/* Check whether we're running in a PHP context, since the entity loader
|
||||
* we've defined is an application level (true global) setting */
|
||||
if (xmlGenericError == php_libxml_error_handler) {
|
||||
return _php_libxml_external_entity_loader(URL, ID, context);
|
||||
} else {
|
||||
return _php_libxml_default_entity_loader(URL, ID, context);
|
||||
}
|
||||
}
|
||||
|
||||
PHP_LIBXML_API void php_libxml_ctx_error(void *ctx, const char *msg, ...)
|
||||
{
|
||||
va_list args;
|
||||
@ -713,7 +725,7 @@ PHP_LIBXML_API void php_libxml_initialize(void)
|
||||
xmlInitParser();
|
||||
|
||||
_php_libxml_default_entity_loader = xmlGetExternalEntityLoader();
|
||||
xmlSetExternalEntityLoader(_php_libxml_external_entity_loader);
|
||||
xmlSetExternalEntityLoader(_php_libxml_pre_ext_ent_loader);
|
||||
|
||||
zend_hash_init(&php_libxml_exports, 0, NULL, NULL, 1);
|
||||
|
||||
@ -729,6 +741,8 @@ PHP_LIBXML_API void php_libxml_shutdown(void)
|
||||
#endif
|
||||
xmlCleanupParser();
|
||||
zend_hash_destroy(&php_libxml_exports);
|
||||
|
||||
xmlSetExternalEntityLoader(_php_libxml_default_entity_loader);
|
||||
_php_libxml_initialized = 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user