summaryrefslogtreecommitdiffstats
path: root/articleenhancer
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-09-29 20:13:28 +0200
committerLukas Reschke <lukas@owncloud.com>2014-09-29 20:14:41 +0200
commit1c463d01fc7bc90111abac58bff7d58fe8701a2a (patch)
tree8c2e236fadaa8dc1072e2f939c8126e381104bde /articleenhancer
parent5f60510826d658e967053dee436c3e0fcf696f3e (diff)
Disable XML entity parsing
Diffstat (limited to 'articleenhancer')
-rw-r--r--articleenhancer/globalarticleenhancer.php4
-rw-r--r--articleenhancer/xpatharticleenhancer.php6
2 files changed, 10 insertions, 0 deletions
diff --git a/articleenhancer/globalarticleenhancer.php b/articleenhancer/globalarticleenhancer.php
index 7411d0adc..f4466f75f 100644
--- a/articleenhancer/globalarticleenhancer.php
+++ b/articleenhancer/globalarticleenhancer.php
@@ -23,13 +23,17 @@ class GlobalArticleEnhancer implements ArticleEnhancer {
* This method is run after all enhancers and for every item
*/
public function enhance(Item $item) {
+
$dom = new \DOMDocument();
// wrap it inside a div if there is none to prevent invalid wrapping
// inside <p> tags
$body = '<div>' . $item->getBody() . '</div>';
+ $loadEntities = libxml_disable_entity_loader(true);
@$dom->loadHTML($body, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
+ libxml_disable_entity_loader($loadEntities);
+
$xpath = new \DOMXpath($dom);
// remove youtube autoplay
diff --git a/articleenhancer/xpatharticleenhancer.php b/articleenhancer/xpatharticleenhancer.php
index ad2e65f0b..0550ada46 100644
--- a/articleenhancer/xpatharticleenhancer.php
+++ b/articleenhancer/xpatharticleenhancer.php
@@ -67,7 +67,10 @@ class XPathArticleEnhancer implements ArticleEnhancer {
}
$dom = new \DOMDocument();
+
+ $loadEntities = libxml_disable_entity_loader(true);
@$dom->loadHTML($body);
+ libxml_disable_entity_loader($loadEntities);
$xpath = new \DOMXpath($dom);
$xpathResult = $xpath->evaluate($search);
@@ -131,9 +134,12 @@ class XPathArticleEnhancer implements ArticleEnhancer {
$dom->preserveWhiteSpace = false;
// return, if xml is empty or loading the HTML fails
+ $loadEntities = libxml_disable_entity_loader(true);
if( trim($xmlString) == "" || !@$dom->loadHTML($xmlString) ) {
+ libxml_disable_entity_loader($loadEntities);
return $xmlString;
}
+ libxml_disable_entity_loader($loadEntities);
// remove <!DOCTYPE
$dom->removeChild($dom->firstChild);