diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Serializer/Adapter/Wddx.php --- 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 }