From bdc3e2aab4f4d5db2938f57007fac5991431e14d Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Mon, 17 Jun 2019 08:45:10 +1000 Subject: [PATCH 1/3] Base virtualBuffer: make sure to coerce values to a string before escaping xml characters. --- source/virtualBuffers/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/virtualBuffers/__init__.py b/source/virtualBuffers/__init__.py index b6b13b5b77f..006c4865d54 100644 --- a/source/virtualBuffers/__init__.py +++ b/source/virtualBuffers/__init__.py @@ -57,7 +57,8 @@ class VBufStorage_findMatch_word(str): # Symbols that must be escaped for a regular expression. FINDBYATTRIBS_ESCAPE_TABLE.update({(ord(s), u"\\" + s) for s in u"^$.*+?()[]{}|"}) def _prepareForFindByAttributes(attribs): - escape = lambda text: text.translate(FINDBYATTRIBS_ESCAPE_TABLE) + # A lambda that coerces a value to a string and escapes xml characters. + escape = lambda val: val.translate(FINDBYATTRIBS_ESCAPE_TABLE) reqAttrs = [] regexp = [] if isinstance(attribs, dict): From 0f1010a0e7e0d91db6f8e451b0b75f9ee10aa7be Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Mon, 17 Jun 2019 08:55:08 +1000 Subject: [PATCH 2/3] Actually coerce the string :) --- source/virtualBuffers/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/virtualBuffers/__init__.py b/source/virtualBuffers/__init__.py index 006c4865d54..fe6d0e9bf04 100644 --- a/source/virtualBuffers/__init__.py +++ b/source/virtualBuffers/__init__.py @@ -58,7 +58,7 @@ class VBufStorage_findMatch_word(str): FINDBYATTRIBS_ESCAPE_TABLE.update({(ord(s), u"\\" + s) for s in u"^$.*+?()[]{}|"}) def _prepareForFindByAttributes(attribs): # A lambda that coerces a value to a string and escapes xml characters. - escape = lambda val: val.translate(FINDBYATTRIBS_ESCAPE_TABLE) + escape = lambda val: str(val).translate(FINDBYATTRIBS_ESCAPE_TABLE) reqAttrs = [] regexp = [] if isinstance(attribs, dict): From 5d94631deae7804014dd0848b330d341e784ee8e Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Mon, 17 Jun 2019 09:27:54 +1000 Subject: [PATCH 3/3] Correct comment. --- source/virtualBuffers/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/virtualBuffers/__init__.py b/source/virtualBuffers/__init__.py index fe6d0e9bf04..ef3fac391b6 100644 --- a/source/virtualBuffers/__init__.py +++ b/source/virtualBuffers/__init__.py @@ -57,7 +57,7 @@ class VBufStorage_findMatch_word(str): # Symbols that must be escaped for a regular expression. FINDBYATTRIBS_ESCAPE_TABLE.update({(ord(s), u"\\" + s) for s in u"^$.*+?()[]{}|"}) def _prepareForFindByAttributes(attribs): - # A lambda that coerces a value to a string and escapes xml characters. + # A lambda that coerces a value to a string and escapes characters suitable for a regular expression. escape = lambda val: str(val).translate(FINDBYATTRIBS_ESCAPE_TABLE) reqAttrs = [] regexp = []