--- a/web/lib/Zend/Serializer/Adapter/Wddx.php Thu Mar 21 17:31:31 2013 +0100
+++ b/web/lib/Zend/Serializer/Adapter/Wddx.php Thu Mar 21 19:50:53 2013 +0100
@@ -15,9 +15,9 @@
* @category Zend
* @package Zend_Serializer
* @subpackage Adapter
- * @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: Wddx.php 20574 2010-01-24 17:39:14Z mabe $
+ * @version $Id: Wddx.php 25033 2012-08-17 19:50:08Z matthew $
*/
/** @see Zend_Serializer_Adapter_AdapterAbstract */
@@ -29,7 +29,7 @@
* @category Zend
* @package Zend_Serializer
* @subpackage Adapter
- * @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
*/
class Zend_Serializer_Adapter_Wddx extends Zend_Serializer_Adapter_AdapterAbstract
@@ -43,8 +43,8 @@
/**
* Constructor
- *
- * @param array $opts
+ *
+ * @param array $opts
* @return void
* @throws Zend_Serializer_Exception if wddx extension not found
*/
@@ -60,9 +60,9 @@
/**
* Serialize PHP to WDDX
- *
- * @param mixed $value
- * @param array $opts
+ *
+ * @param mixed $value
+ * @param array $opts
* @return string
* @throws Zend_Serializer_Exception on wddx error
*/
@@ -86,9 +86,9 @@
/**
* Unserialize from WDDX to PHP
- *
- * @param string $wddx
- * @param array $opts
+ *
+ * @param string $wddx
+ * @param array $opts
* @return mixed
* @throws Zend_Serializer_Exception on wddx error
*/
@@ -100,7 +100,19 @@
// check if the returned NULL is valid
// or based on an invalid wddx string
try {
- $simpleXml = new SimpleXMLElement($wddx);
+ $oldLibxmlDisableEntityLoader = libxml_disable_entity_loader(true);
+ $dom = new DOMDocument;
+ $dom->loadXML($wddx);
+ foreach ($dom->childNodes as $child) {
+ if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
+ require_once 'Zend/Serializer/Exception.php';
+ throw new Zend_Serializer_Exception(
+ 'Invalid XML: Detected use of illegal DOCTYPE'
+ );
+ }
+ }
+ $simpleXml = simplexml_import_dom($dom);
+ libxml_disable_entity_loader($oldLibxmlDisableEntityLoader);
if (isset($simpleXml->data[0]->null[0])) {
return null; // valid null
}