From c94b2205b27d1d527f159bcf13ba62ce937457f6 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 3 Nov 2016 17:06:00 +0100 Subject: [PATCH 1/3] Escape section id and name when writing integrated_tool_panel.xml This should fix #3084. --- lib/galaxy/tools/toolbox/integrated_panel.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/tools/toolbox/integrated_panel.py b/lib/galaxy/tools/toolbox/integrated_panel.py index c17d9c8387b..e744064e6bf 100644 --- a/lib/galaxy/tools/toolbox/integrated_panel.py +++ b/lib/galaxy/tools/toolbox/integrated_panel.py @@ -3,6 +3,7 @@ import shutil import tempfile import time import traceback +from xml.sax.saxutils import escape from .panel import ToolPanelElements from .panel import panel_item_types @@ -78,7 +79,7 @@ class ManagesIntegratedToolPanelMixin: section_id = item.id or '' section_name = item.name or '' section_version = item.version or '' - os.write( fd, '
\n' % ( section_id, section_name, section_version ) ) + os.write( fd, '
\n' % ( escape(section_id), escape(section_name), section_version ) ) for section_key, section_item_type, section_item in item.panel_items_iter(): if section_item_type == panel_item_types.TOOL: if section_item: From f6ca913809330922a3bc96bcf0f77d3f60e9bbe9 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 4 Nov 2016 12:49:30 +0100 Subject: [PATCH 2/3] Log invalid xml filename --- lib/galaxy/util/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/util/__init__.py b/lib/galaxy/util/__init__.py index e55cd8cbb87..bccd6b1dc79 100644 --- a/lib/galaxy/util/__init__.py +++ b/lib/galaxy/util/__init__.py @@ -45,6 +45,7 @@ except ImportError: docutils_html4css1 = None from xml.etree import ElementTree, ElementInclude +from xml.etree.ElementTree import ParseError from .inflection import Inflector, English inflector = Inflector(English) @@ -184,7 +185,11 @@ def parse_xml( fname ): def doctype( *args ): pass tree = ElementTree.ElementTree() - root = tree.parse( fname, parser=ElementTree.XMLParser( target=DoctypeSafeCallbackTarget() ) ) + try: + root = tree.parse( fname, parser=ElementTree.XMLParser( target=DoctypeSafeCallbackTarget() ) ) + except ParseError: + log.exception("Error parsing file %s", fname) + raise ElementInclude.include( root ) return tree From c5245219567562f67556548cbc0b8a9624ea0308 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 4 Nov 2016 20:21:05 +0100 Subject: [PATCH 3/3] Make catching XML parsing errors python2.6 compatible --- lib/galaxy/util/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/util/__init__.py b/lib/galaxy/util/__init__.py index bccd6b1dc79..04b705c462e 100644 --- a/lib/galaxy/util/__init__.py +++ b/lib/galaxy/util/__init__.py @@ -45,7 +45,10 @@ except ImportError: docutils_html4css1 = None from xml.etree import ElementTree, ElementInclude -from xml.etree.ElementTree import ParseError +try: + from xml.etree.ElementTree import ParseError +except ImportError: + from xml.parsers.expat import ExpatError as ParseError from .inflection import Inflector, English inflector = Inflector(English)