This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/main by this push:
     new 99668b56e9c address MaskSensitiveHelper error (#2705)
99668b56e9c is described below

commit 99668b56e9c39bac5efda2d53b94f03bd8fe02f0
Author: Freeman(Yue) Fang <[email protected]>
AuthorDate: Mon Nov 3 12:37:15 2025 -0500

    address MaskSensitiveHelper error (#2705)
---
 .../cxf/ext/logging/MaskSensitiveHelper.java       |  5 +++--
 .../cxf/ext/logging/MaskSensitiveHelperTest.java   | 22 +++++++++++++++++++++-
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git 
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
 
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
index e6ec38eeb37..0795038c622 100644
--- 
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
+++ 
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
@@ -31,8 +31,9 @@ public class MaskSensitiveHelper {
     private static final String PATTERN_XML_NAMESPACE_PREFIX = 
"[\\w.\\-\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6"
             + 
"\\u00F8-\\u02FF\\u0300-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F"
             + "\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]+";
-    private static final String MATCH_PATTERN_XML_TEMPLATE = "(<(" + 
PATTERN_XML_NAMESPACE_PREFIX
-            + ":)?-ELEMENT_NAME-\\b[^>/]*>)(.*?)(</(" + 
PATTERN_XML_NAMESPACE_PREFIX + ":)?-ELEMENT_NAME->)";
+    private static final String MATCH_PATTERN_XML_TEMPLATE =
+        "(<(" + PATTERN_XML_NAMESPACE_PREFIX + ":)?-ELEMENT_NAME-\\b(?:(?!/>)" 
+            + "[^>])*?>)(.*?)(</(" + PATTERN_XML_NAMESPACE_PREFIX + 
":)?-ELEMENT_NAME->)";
     private static final String REPLACEMENT_XML_TEMPLATE = "$1XXX$4";
     private static final String MATCH_PATTERN_JSON_TEMPLATE_ARRAY 
         = "\"-ELEMENT_NAME-\"[ \\t]*:[ \\t]*[\\[]((\\s*\".\"),?)+[\\]]";
diff --git 
a/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java
 
b/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java
index 88d910b6c8c..761409b3a6a 100644
--- 
a/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java
+++ 
b/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java
@@ -92,6 +92,23 @@ public class MaskSensitiveHelperTest {
 
     private static final String MASKED_LOGGING_CONTENT_XML_WITH_NAMESPACE =
             "<ns:user>testUser</ns:user><ns:password>XXX</ns:password>";
+    
+    // attributes with slash characters are supported
+    private static final String SENSITIVE_XML_WITH_NS_URI = "<root 
xmlns:x=\"http://a/b/c\";>"
+            + "<x:password alg=\"http://algo/sha-256\";>secret</x:password>"
+                                                            + "</root>";
+    private static final String MASKED_XML_WITH_NS_URI = "<root 
xmlns:x=\"http://a/b/c\";>"
+                                                         + "<x:password 
alg=\"http://algo/sha-256\";>XXX</x:password>"
+                                                         + "</root>";
+
+    // plain attribute value containing slashes
+    private static final String SENSITIVE_XML_WITH_ATTR_URL = "<root><password 
href=\"https://example.com/path\";>"
+        + "secret</password></root>";
+    private static final String MASKED_XML_WITH_ATTR_URL = "<root><password 
href=\"https://example.com/path\";>"
+        + "XXX</password></root>";
+
+    // Self-closing element
+    private static final String SELF_CLOSING_UNCHANGED = 
"<root><password/></root>";
 
     private static final Set<String> SENSITIVE_ELEMENTS = new 
HashSet<>(Arrays.asList("password"));
     private static final String APPLICATION_XML = "application/xml";
@@ -118,7 +135,10 @@ public class MaskSensitiveHelperTest {
             {SENSITIVE_LOGGING_MULTIPLE_ELEMENT_XML, 
MASKED_LOGGING_MULTIPLE_ELEMENT_XML, APPLICATION_XML},
             {SENSITIVE_LOGGING_CONTENT_XML_WITH_NAMESPACE, 
MASKED_LOGGING_CONTENT_XML_WITH_NAMESPACE, APPLICATION_XML},
             {SENSITIVE_LOGGING_CONTENT_JSON, MASKED_LOGGING_CONTENT_JSON, 
APPLICATION_JSON},
-            {SENSITIVE_LOGGING_CONTENT_JSON_ARRAY, 
MASKED_LOGGING_CONTENT_JSON_ARRAY, APPLICATION_JSON}
+            {SENSITIVE_LOGGING_CONTENT_JSON_ARRAY, 
MASKED_LOGGING_CONTENT_JSON_ARRAY, APPLICATION_JSON},
+            {SENSITIVE_XML_WITH_NS_URI, MASKED_XML_WITH_NS_URI, 
APPLICATION_XML },
+            {SENSITIVE_XML_WITH_ATTR_URL, MASKED_XML_WITH_ATTR_URL, 
APPLICATION_XML },
+            {SELF_CLOSING_UNCHANGED, SELF_CLOSING_UNCHANGED, APPLICATION_XML },
         });
     }
 

Reply via email to