|
@@ -303,12 +303,15 @@ class Zend_XmlRpc_Request
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // @see ZF-12293 - disable external entities for security purposes
|
|
|
|
|
+ $loadEntities = libxml_disable_entity_loader(true);
|
|
|
try {
|
|
try {
|
|
|
$xml = new SimpleXMLElement($request);
|
|
$xml = new SimpleXMLElement($request);
|
|
|
} catch (Exception $e) {
|
|
} catch (Exception $e) {
|
|
|
// Not valid XML
|
|
// Not valid XML
|
|
|
$this->_fault = new Zend_XmlRpc_Fault(631);
|
|
$this->_fault = new Zend_XmlRpc_Fault(631);
|
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
|
|
|
+ libxml_disable_entity_loader($loadEntities);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -317,6 +320,7 @@ class Zend_XmlRpc_Request
|
|
|
// Missing method name
|
|
// Missing method name
|
|
|
$this->_fault = new Zend_XmlRpc_Fault(632);
|
|
$this->_fault = new Zend_XmlRpc_Fault(632);
|
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
|
|
|
+ libxml_disable_entity_loader($loadEntities);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -330,6 +334,7 @@ class Zend_XmlRpc_Request
|
|
|
if (!isset($param->value)) {
|
|
if (!isset($param->value)) {
|
|
|
$this->_fault = new Zend_XmlRpc_Fault(633);
|
|
$this->_fault = new Zend_XmlRpc_Fault(633);
|
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
|
|
|
+ libxml_disable_entity_loader($loadEntities);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -340,6 +345,7 @@ class Zend_XmlRpc_Request
|
|
|
} catch (Exception $e) {
|
|
} catch (Exception $e) {
|
|
|
$this->_fault = new Zend_XmlRpc_Fault(636);
|
|
$this->_fault = new Zend_XmlRpc_Fault(636);
|
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
$this->_fault->setEncoding($this->getEncoding());
|
|
|
|
|
+ libxml_disable_entity_loader($loadEntities);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -348,6 +354,7 @@ class Zend_XmlRpc_Request
|
|
|
$this->_params = $argv;
|
|
$this->_params = $argv;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ libxml_disable_entity_loader($loadEntities);
|
|
|
$this->_xml = $request;
|
|
$this->_xml = $request;
|
|
|
|
|
|
|
|
return true;
|
|
return true;
|