diff --git a/cloudpulse/api/middleware/parsable_error.py b/cloudpulse/api/middleware/parsable_error.py index e7cf8f0..284af3c 100644 --- a/cloudpulse/api/middleware/parsable_error.py +++ b/cloudpulse/api/middleware/parsable_error.py @@ -18,8 +18,9 @@ response with one formatted so the client can parse it. Based on pecan.middleware.errordocument """ +from defusedxml import ElementTree import json -from xml import etree as et +# from xml import etree as et import webob @@ -69,11 +70,11 @@ class ParsableErrorMiddleware(object): == 'application/xml'): try: # simple check xml is valid - body = [et.ElementTree.tostring( - et.ElementTree.fromstring('' - + '\n'.join(app_iter) - + ''))] - except et.ElementTree.ParseError as err: + body = [ElementTree.tostring( + ElementTree.fromstring('' + + '\n'.join(app_iter) + + ''))] + except ElementTree.ParseError as err: LOG.error(_LE('Error parsing HTTP response: %s'), err) body = ['%s' % state['status_code'] + ''] diff --git a/requirements.txt b/requirements.txt index df65d37..e22d2bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,3 +20,4 @@ python-glanceclient>=0.15.0,<0.18.0 python-neutronclient>=2.4.0,<2.5.0 python-novaclient>=2.22.0,<2.24.0 WSME>=0.6,<0.7 +defusedxml>=0.4.1