--- 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/'></definitions>";
+ 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: