Merge "Handle non-string keys appropriately"

This commit is contained in:
Zuul 2018-07-18 03:43:01 +00:00 committed by Gerrit Code Review
commit 7f8397091f
2 changed files with 18 additions and 5 deletions

View File

@ -403,15 +403,21 @@ def mask_dict_password(dictionary, secret="***"): # nosec
continue
# NOTE(jlvillal): Check to see if anything in the dictionary 'key'
# contains any key specified in _SANITIZE_KEYS.
for sani_key in _SANITIZE_KEYS:
if sani_key in k:
out[k] = secret
break
else:
k_matched = False
if isinstance(k, six.string_types):
for sani_key in _SANITIZE_KEYS:
if sani_key in k:
out[k] = secret
k_matched = True
break
if not k_matched:
# We did not find a match for the key name in the
# _SANITIZE_KEYS, so we fall through to here
if isinstance(v, six.string_types):
out[k] = mask_password(v, secret=secret)
else:
# Just leave it alone.
out[k] = v
return out

View File

@ -660,6 +660,13 @@ class MaskDictionaryPasswordTestCase(test_base.BaseTestCase):
self.assertEqual(expected,
strutils.mask_dict_password(payload))
def test_do_an_int(self):
payload = {}
payload[1] = 2
expected = payload.copy()
self.assertEqual(expected,
strutils.mask_dict_password(payload))
def test_mask_values(self):
payload = {'somekey': 'test = cmd --password my\xe9\x80\x80pass'}
expected = {'somekey': 'test = cmd --password ***'}