diff --git a/oslo_utils/strutils.py b/oslo_utils/strutils.py index c7d0f55d..922ad228 100644 --- a/oslo_utils/strutils.py +++ b/oslo_utils/strutils.py @@ -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 diff --git a/oslo_utils/tests/test_strutils.py b/oslo_utils/tests/test_strutils.py index af1faf13..301b6197 100644 --- a/oslo_utils/tests/test_strutils.py +++ b/oslo_utils/tests/test_strutils.py @@ -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 ***'}