diff options
author | Dmitry Stogov <dmitry@zend.com> | 2013-02-20 22:31:52 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2013-02-20 22:31:52 +0400 |
commit | b7f89bc70118db6481196e343dc9c244bca022b0 (patch) | |
tree | 9755e06ccdc17274639fc33911edffcac13d44ae /ext/soap/php_xml.c | |
parent | 39fb14acb7aa39c9c7f9a070d0871f0a240c4369 (diff) | |
parent | 20c623c9be2ad9c408b991e805780ac1fc5493e8 (diff) | |
download | php-git-b7f89bc70118db6481196e343dc9c244bca022b0.tar.gz |
Merge branch 'PHP-5.5'
* PHP-5.5:
Fixed external entity loading
Diffstat (limited to 'ext/soap/php_xml.c')
-rw-r--r-- | ext/soap/php_xml.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c index 737a335e3a..a74ec02f43 100644 --- a/ext/soap/php_xml.c +++ b/ext/soap/php_xml.c @@ -20,6 +20,7 @@ /* $Id$ */ #include "php_soap.h" +#include "ext/libxml/php_libxml.h" #include "libxml/parser.h" #include "libxml/parserInternals.h" @@ -91,14 +92,17 @@ xmlDocPtr soap_xmlParseFile(const char *filename TSRMLS_DC) ctxt = xmlCreateFileParserCtxt(filename); PG(allow_url_fopen) = old_allow_url_fopen; if (ctxt) { + zend_bool old; + ctxt->keepBlanks = 0; - ctxt->options &= ~XML_PARSE_DTDLOAD; ctxt->sax->ignorableWhitespace = soap_ignorableWhitespace; ctxt->sax->comment = soap_Comment; ctxt->sax->warning = NULL; ctxt->sax->error = NULL; /*ctxt->sax->fatalError = NULL;*/ + old = php_libxml_disable_entity_loader(1); xmlParseDocument(ctxt); + php_libxml_disable_entity_loader(old); if (ctxt->wellFormed) { ret = ctxt->myDoc; if (ret->URL == NULL && ctxt->directory != NULL) { @@ -134,7 +138,8 @@ xmlDocPtr soap_xmlParseMemory(const void *buf, size_t buf_size) */ ctxt = xmlCreateMemoryParserCtxt(buf, buf_size); if (ctxt) { - ctxt->options &= ~XML_PARSE_DTDLOAD; + zend_bool old; + ctxt->sax->ignorableWhitespace = soap_ignorableWhitespace; ctxt->sax->comment = soap_Comment; ctxt->sax->warning = NULL; @@ -143,7 +148,9 @@ xmlDocPtr soap_xmlParseMemory(const void *buf, size_t buf_size) #if LIBXML_VERSION >= 20703 ctxt->options |= XML_PARSE_HUGE; #endif + old = php_libxml_disable_entity_loader(1); xmlParseDocument(ctxt); + php_libxml_disable_entity_loader(old); if (ctxt->wellFormed) { ret = ctxt->myDoc; if (ret->URL == NULL && ctxt->directory != NULL) { |