static PHP_FUNCTION(libxml_get_last_error);
static PHP_FUNCTION(libxml_clear_errors);
static PHP_FUNCTION(libxml_get_errors);
+static PHP_FUNCTION(libxml_disable_entity_loader);
static zend_class_entry *libxmlerror_class_entry;
ZEND_BEGIN_ARG_INFO(arginfo_libxml_clear_errors, 0)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_libxml_disable_entity_loader, 0)
+ ZEND_ARG_INFO(0, disable)
+ZEND_END_ARG_INFO()
+
/* }}} */
/* {{{ extension definition structures */
PHP_FE(libxml_get_last_error, arginfo_libxml_get_last_error)
PHP_FE(libxml_clear_errors, arginfo_libxml_clear_errors)
PHP_FE(libxml_get_errors, arginfo_libxml_get_errors)
+ PHP_FE(libxml_disable_entity_loader, arginfo_libxml_disable_entity_loader)
{NULL, NULL, NULL}
};
return php_stream_close((php_stream*)context);
}
+static xmlParserInputBufferPtr
+php_libxml_input_buffer_noload(const char *URI, xmlCharEncoding enc)
+{
+ return NULL;
+}
+
static xmlParserInputBufferPtr
php_libxml_input_buffer_create_filename(const char *URI, xmlCharEncoding enc)
{
}
/* }}} */
+/* {{{ proto bool libxml_disable_entity_loader([boolean disable])
+ Disable/Enable ability to load external entities */
+static PHP_FUNCTION(libxml_disable_entity_loader)
+{
+ zend_bool disable = 1;
+ xmlParserInputBufferCreateFilenameFunc old;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &disable) == FAILURE) {
+ return;
+ }
+
+ if (disable == 0) {
+ old = xmlParserInputBufferCreateFilenameDefault(php_libxml_input_buffer_create_filename);
+ } else {
+ old = xmlParserInputBufferCreateFilenameDefault(php_libxml_input_buffer_noload);
+ }
+
+ if (old == php_libxml_input_buffer_noload) {
+ RETURN_TRUE;
+ }
+
+ RETURN_FALSE;
+}
+/* }}} */
+
/* {{{ Common functions shared by extensions */
int php_libxml_xmlCheckUTF8(const unsigned char *s)
{