From 2ed170be25a3a0dfe74c6520baf40ada89797ff7 Mon Sep 17 00:00:00 2001 From: Ben Fuhrmannek Date: Tue, 11 Jan 2022 19:46:47 +0100 Subject: made xml a runtime requirement instead of compile time --- src/sp_disable_xxe.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'src/sp_disable_xxe.c') diff --git a/src/sp_disable_xxe.c b/src/sp_disable_xxe.c index b6030c6..44e60ab 100644 --- a/src/sp_disable_xxe.c +++ b/src/sp_disable_xxe.c @@ -1,23 +1,22 @@ #include "php_snuffleupagus.h" -#ifdef HAVE_XML - PHP_FUNCTION(sp_libxml_disable_entity_loader) { - sp_log_warn("xxe", - "A call to libxml_disable_entity_loader was tried and nopped"); + sp_log_warn("xxe", "A call to libxml_disable_entity_loader was tried and nopped"); RETURN_TRUE; } PHP_FUNCTION(sp_libxml_set_external_entity_loader) { - sp_log_warn( - "xxe", - "A call to libxml_set_external_entity_loader was tried and nopped"); + sp_log_warn("xxe", "A call to libxml_set_external_entity_loader was tried and nopped"); RETURN_TRUE; } int hook_libxml_disable_entity_loader() { TSRMLS_FETCH(); + if (!zend_hash_str_find_ptr(&module_registry, ZEND_STRL("xml"))) { + sp_log_warn("xxe", "Cannot enable XXE protection. XML support is disabled in PHP."); + } + zval func_name; zval retval; zval params[1] = {0}; @@ -34,15 +33,8 @@ int hook_libxml_disable_entity_loader() { ZVAL_NULL(¶ms[0]); call_user_function(CG(function_table), NULL, &func_name, &retval, 1, params); - HOOK_FUNCTION("libxml_disable_entity_loader", sp_internal_functions_hook, - PHP_FN(sp_libxml_disable_entity_loader)); - HOOK_FUNCTION("libxml_set_external_entity_loader", sp_internal_functions_hook, - PHP_FN(sp_libxml_set_external_entity_loader)); + HOOK_FUNCTION("libxml_disable_entity_loader", sp_internal_functions_hook, PHP_FN(sp_libxml_disable_entity_loader)); + HOOK_FUNCTION("libxml_set_external_entity_loader", sp_internal_functions_hook, PHP_FN(sp_libxml_set_external_entity_loader)); return SUCCESS; } -#else -int hook_libxml_disable_entity_loader() { - sp_log_warn("xxe", "Cannot enable XXE protection. XML support is disabled in PHP."); -} -#endif \ No newline at end of file -- cgit v1.3