33 lines
1.7 KiB
Diff
33 lines
1.7 KiB
Diff
From fd48ca875aaa46920b6d94fe737420d3985ad7d4 Mon Sep 17 00:00:00 2001
|
|
From: Mark Thomas <markt@apache.org>
|
|
Date: Tue, 13 Apr 2021 12:54:24 +0100
|
|
Subject: [PATCH] Expanded tests to cover nested roles and fix escaping issues in search
|
|
|
|
---
|
|
java/org/apache/catalina/realm/JNDIRealm.java | 9 +++++++--
|
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/java/org/apache/catalina/realm/JNDIRealm.java b/java/org/apache/catalina/realm/JNDIRealm.java
|
|
index a3b6f86..cfe1c15 100644
|
|
--- a/java/org/apache/catalina/realm/JNDIRealm.java
|
|
+++ b/java/org/apache/catalina/realm/JNDIRealm.java
|
|
@@ -2021,8 +2021,13 @@ System.out.println("userRoleName " + userRoleName + " " + attrs.get(userRoleName
|
|
Map<String, String> newThisRound = new HashMap<>(); // Stores the groups we find in this iteration
|
|
|
|
for (Entry<String, String> group : newGroups.entrySet()) {
|
|
- filter = connection.roleFormat.format(new String[] { doFilterEscaping(group.getKey()),
|
|
- group.getValue(), group.getValue() });
|
|
+ // Group key is already value escaped if required
|
|
+ // Group value is not value escaped
|
|
+ // Everything needs to be filter escaped
|
|
+ filter = connection.roleFormat.format(new String[] {
|
|
+ doFilterEscaping(group.getKey()),
|
|
+ doFilterEscaping(doAttributeValueEscaping(group.getValue())),
|
|
+ doFilterEscaping(doAttributeValueEscaping(group.getValue())) });
|
|
|
|
if (containerLog.isTraceEnabled()) {
|
|
containerLog.trace("Perform a nested group search with base "+ roleBase + " and filter " + filter);
|
|
--
|
|
2.23.0
|
|
|