rrichards Tue Jun 23 10:50:09 2009 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/libxml libxml.c Log: MFH: add libxml_disable_entity_loader function http://cvs.php.net/viewvc.cgi/php-src/ext/libxml/libxml.c?r1=1.32.2.7.2.15.2.11&r2=1.32.2.7.2.15.2.12&diff_format=u Index: php-src/ext/libxml/libxml.c diff -u php-src/ext/libxml/libxml.c:1.32.2.7.2.15.2.11 php-src/ext/libxml/libxml.c:1.32.2.7.2.15.2.12 --- php-src/ext/libxml/libxml.c:1.32.2.7.2.15.2.11 Sat Mar 14 17:30:28 2009 +++ php-src/ext/libxml/libxml.c Tue Jun 23 10:50:09 2009 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: libxml.c,v 1.32.2.7.2.15.2.11 2009/03/14 17:30:28 rrichards Exp $ */ +/* $Id: libxml.c,v 1.32.2.7.2.15.2.12 2009/06/23 10:50:09 rrichards Exp $ */ #define IS_EXT_MODULE @@ -68,6 +68,7 @@ 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; @@ -104,6 +105,10 @@ 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 */ @@ -113,6 +118,7 @@ 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} }; @@ -344,6 +350,12 @@ } 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) { xmlParserInputBufferPtr ret; @@ -820,6 +832,31 @@ } /* }}} */ +/* {{{ 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) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php