summaryrefslogtreecommitdiff
path: root/openid/yadis
diff options
context:
space:
mode:
authorVlastimil Zíma <vlastimil.zima@nic.cz>2018-03-08 13:57:53 +0100
committerVlastimil Zíma <vlastimil.zima@nic.cz>2018-03-08 14:09:58 +0100
commit66b9f3a05a115d63aa268279cce574699bd603c8 (patch)
treeca40678048dffe8084fc65d04009ff5ec47cd68a /openid/yadis
parent43ae31f042929b00484361ce9c8a828281525a66 (diff)
downloadopenid-66b9f3a05a115d63aa268279cce574699bd603c8.tar.gz
Fix XXE in XRDS parsing
Diffstat (limited to 'openid/yadis')
-rw-r--r--openid/yadis/etxrd.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/openid/yadis/etxrd.py b/openid/yadis/etxrd.py
index a536617..a96a107 100644
--- a/openid/yadis/etxrd.py
+++ b/openid/yadis/etxrd.py
@@ -22,7 +22,7 @@ import random
from datetime import datetime
from time import strptime
-from lxml import etree as ElementTree
+from lxml import etree
from openid.yadis import xri
@@ -48,14 +48,15 @@ def parseXRDS(text):
@raises XRDSError: When there is a parse error or the document does
not contain an XRDS.
"""
+ parser = etree.XMLParser(resolve_entities=False)
try:
- element = ElementTree.XML(text)
- except ElementTree.Error as why:
+ element = etree.XML(text, parser)
+ except etree.Error as why:
exc = XRDSError('Error parsing document as XML')
exc.reason = why
raise exc
else:
- tree = ElementTree.ElementTree(element)
+ tree = etree.ElementTree(element)
if not isXRDS(tree):
raise XRDSError('Not an XRDS document')