diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Soap/Wsdl.php --- a/web/lib/Zend/Soap/Wsdl.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Soap/Wsdl.php Thu Mar 21 19:50:53 2013 +0100 @@ -14,9 +14,9 @@ * * @category Zend * @package Zend_Soap - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Wsdl.php 23342 2010-11-15 15:29:20Z alexander $ + * @version $Id: Wsdl.php 25033 2012-08-17 19:50:08Z matthew $ */ /** @@ -96,13 +96,23 @@ xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'>"; + libxml_disable_entity_loader(true); $this->_dom = new DOMDocument(); if (!$this->_dom->loadXML($wsdl)) { require_once 'Zend/Server/Exception.php'; throw new Zend_Server_Exception('Unable to create DomDocument'); } else { + foreach ($this->_dom->childNodes as $child) { + if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) { + require_once 'Zend/Server/Exception.php'; + throw new Zend_Server_Exception( + 'Invalid XML: Detected use of illegal DOCTYPE' + ); + } + } $this->_wsdl = $this->_dom->documentElement; } + libxml_disable_entity_loader(false); $this->setComplexTypeStrategy($strategy); } @@ -125,8 +135,10 @@ // @todo: This is the worst hack ever, but its needed due to design and non BC issues of WSDL generation $xml = $this->_dom->saveXML(); $xml = str_replace($oldUri, $uri, $xml); + libxml_disable_entity_loader(true); $this->_dom = new DOMDocument(); $this->_dom->loadXML($xml); + libxml_disable_entity_loader(false); } return $this; @@ -543,28 +555,24 @@ case 'string': case 'str': return 'xsd:string'; - break; + case 'long': + return 'xsd:long'; case 'int': case 'integer': return 'xsd:int'; - break; case 'float': + return 'xsd:float'; case 'double': - return 'xsd:float'; - break; + return 'xsd:double'; case 'boolean': case 'bool': return 'xsd:boolean'; - break; case 'array': return 'soap-enc:Array'; - break; case 'object': return 'xsd:struct'; - break; case 'mixed': return 'xsd:anyType'; - break; case 'void': return ''; default: