summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2014-01-22 08:49:09 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2014-01-22 08:49:09 -0500
commit9f16500047a7985ac1533e3dc0e1c0e3da23502f (patch)
treee5d22d8c3474aa2b7fa5c429c1e572f326a348aa /src
parentf37833e5ea103796d5177a24901befd9b0f7ab28 (diff)
downloadbcfg2-9f16500047a7985ac1533e3dc0e1c0e3da23502f.tar.gz
bcfg2-9f16500047a7985ac1533e3dc0e1c0e3da23502f.tar.bz2
bcfg2-9f16500047a7985ac1533e3dc0e1c0e3da23502f.zip
Don't parse unicode XML with encoding
Fix another place where a unicode XML string with an encoding declaration may be read. Cf. 0f8d403d1a86cfbfe8222662dc445e16e8f7eff9
Diffstat (limited to 'src')
-rw-r--r--src/lib/Bcfg2/Client/XML.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/Bcfg2/Client/XML.py b/src/lib/Bcfg2/Client/XML.py
index 91d4ac5c6..1f1b7df7d 100644
--- a/src/lib/Bcfg2/Client/XML.py
+++ b/src/lib/Bcfg2/Client/XML.py
@@ -5,9 +5,18 @@
# pylint: disable=E0611,W0611,W0613,C0103
try:
- from lxml.etree import Element, SubElement, XML, tostring
+ from lxml.etree import Element, SubElement, tostring
from lxml.etree import XMLSyntaxError as ParseError
+ from lxml.etree import XML as _XML
driver = 'lxml'
+
+ def XML(val, **kwargs):
+ try:
+ return _XML(val, **kwargs)
+ except ValueError:
+ # unicode strings w/encoding declaration are not supported
+ # in recent lxml.etree
+ return _XML(val.encode(), **kwargs)
except ImportError:
# lxml not available
from xml.parsers.expat import ExpatError as ParseError