diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2014-01-22 08:49:09 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2014-01-22 08:49:09 -0500 |
commit | 9f16500047a7985ac1533e3dc0e1c0e3da23502f (patch) | |
tree | e5d22d8c3474aa2b7fa5c429c1e572f326a348aa /src/lib | |
parent | f37833e5ea103796d5177a24901befd9b0f7ab28 (diff) | |
download | bcfg2-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/lib')
-rw-r--r-- | src/lib/Bcfg2/Client/XML.py | 11 |
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 |