summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHervé Beraud <hberaud@redhat.com>2022-03-09 14:23:29 +0100
committerHervé Beraud <hberaud@redhat.com>2022-03-10 08:49:26 +0100
commitde4429f2be5fa21d1f6e1cacbb3c8417a7c56310 (patch)
tree61e2980e066b9221beee1edd5c8e418d4c16b919
parentc03c07cd7223a485a1c86194ea3ec9f242316d28 (diff)
downloadoslo-utils-de4429f2be5fa21d1f6e1cacbb3c8417a7c56310.tar.gz
fix strutils password regex4.13.0
Those regexes will fix Object style representation output. See the payload used in tests for details. This kind of output can be obtained by using the command: ``` $ openstack --debug ``` Co-Authored-By: Daniel Bengtsson <dbengt@redhat.com> Change-Id: I9024be93b109d1b64ca736546c0f69db7a5e06d0
-rw-r--r--oslo_utils/strutils.py2
-rw-r--r--oslo_utils/tests/test_strutils.py11
-rw-r--r--releasenotes/notes/mask-password-pattern-c8c880098743de3e.yaml5
3 files changed, 18 insertions, 0 deletions
diff --git a/oslo_utils/strutils.py b/oslo_utils/strutils.py
index e27a63d..0bb9fc5 100644
--- a/oslo_utils/strutils.py
+++ b/oslo_utils/strutils.py
@@ -79,6 +79,8 @@ _SANITIZE_PATTERNS_WILDCARD = {}
# have two parameters. Use different lists of patterns here.
_FORMAT_PATTERNS_1 = [r'(%(key)s[0-9]*\s*[=]\s*)[^\s^\'^\"]+']
_FORMAT_PATTERNS_2 = [r'(%(key)s[0-9]*\s*[=]\s*[\"\'])[^\"\']*([\"\'])',
+ r'(%(key)s[0-9]*\s*[=]\s*[\"])[^\"]*([\"])',
+ r'(%(key)s[0-9]*\s*[=]\s*[\'])[^\']*([\'])',
r'(%(key)s[0-9]*\s+[\"\'])[^\"\']*([\"\'])',
r'([-]{2}%(key)s[0-9]*\s+)[^\'^\"^=^\s]+([\s]*)',
r'(<%(key)s[0-9]*>)[^<]*(</%(key)s[0-9]*>)',
diff --git a/oslo_utils/tests/test_strutils.py b/oslo_utils/tests/test_strutils.py
index ef679ff..12a0990 100644
--- a/oslo_utils/tests/test_strutils.py
+++ b/oslo_utils/tests/test_strutils.py
@@ -289,6 +289,17 @@ StringToBytesTest.generate_scenarios()
class MaskPasswordTestCase(test_base.BaseTestCase):
+ def test_namespace_objects(self):
+ payload = """
+ Namespace(passcode='', username='', password='my"password',
+ profile='', verify=None, token='')
+ """
+ expected = """
+ Namespace(passcode='', username='', password='***',
+ profile='', verify=None, token='***')
+ """
+ self.assertEqual(expected, strutils.mask_password(payload))
+
def test_sanitize_keys(self):
lowered = [k.lower() for k in strutils._SANITIZE_KEYS]
diff --git a/releasenotes/notes/mask-password-pattern-c8c880098743de3e.yaml b/releasenotes/notes/mask-password-pattern-c8c880098743de3e.yaml
new file mode 100644
index 0000000..15b3efb
--- /dev/null
+++ b/releasenotes/notes/mask-password-pattern-c8c880098743de3e.yaml
@@ -0,0 +1,5 @@
+---
+security:
+ - |
+ This patch ensures that we mask sensitive data when masking password, even
+ if double quotes are used as password value.