Filter unprintable ASCII during enumeration

When enumerating DCIM_ControllerView, the DriverVersion field may have
unprintable ASCII characters in it if the server has a BOSS card. In
the past, it was observed that this field could contain unprintable
non-ASCII characters, but unprintable ASCII characters have been
found in it as well.

This fix changes the filtering so that only printable ASCII
characters and the tab character pass the filter.

Closes-Bug: 1816194
Change-Id: If7274fed19fb763aa7c2e4adc3676a4e3c26aee0
(cherry picked from commit 95440920fd)
This commit is contained in:
Christopher Dearborn 2019-02-14 16:23:31 -05:00
parent e0149f1e71
commit d8766baebb
1 changed files with 5 additions and 2 deletions

View File

@ -163,8 +163,11 @@ class Client(object):
resp_xml = ElementTree.fromstring(resp.content) resp_xml = ElementTree.fromstring(resp.content)
except ElementTree.XMLSyntaxError: except ElementTree.XMLSyntaxError:
LOG.warning('Received invalid content from iDRAC. Filtering out ' LOG.warning('Received invalid content from iDRAC. Filtering out '
'non-ASCII characters: ' + repr(resp.content)) 'unprintable characters: ' + repr(resp.content))
resp_xml = ElementTree.fromstring(re.sub(six.b('[^\x00-\x7f]'),
# Filter out everything except for printable ASCII characters and
# tab
resp_xml = ElementTree.fromstring(re.sub(six.b('[^\x20-\x7e\t]'),
six.b(''), six.b(''),
resp.content)) resp.content))