This is an automated email from the ASF dual-hosted git repository.
lprimak pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/shiro.git
The following commit(s) were added to refs/heads/3.x by this push:
new 0f4bfc6f8 Using Rdn.escapeValues()
0f4bfc6f8 is described below
commit 0f4bfc6f88b18aa1e6d5216037c48d1f5910d672
Author: lprimak <[email protected]>
AuthorDate: Thu May 28 11:57:27 2026 -0500
Using Rdn.escapeValues()
---
.../apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java | 8 +++++---
.../main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java | 6 ++++--
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git
a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
index 0794ae98c..34202b140 100644
---
a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
+++
b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
@@ -39,6 +39,7 @@ import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.LdapContext;
+import javax.naming.ldap.Rdn;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -234,11 +235,12 @@ public class ActiveDirectoryRealm extends
AbstractLdapRealm {
}
protected String getUsernameWithSuffix(String username) {
+ String sanitizedUsername = Rdn.escapeValue(username);
if (principalSuffix != null
- &&
!username.toLowerCase(Locale.ROOT).endsWith(principalSuffix.toLowerCase(Locale.ROOT)))
{
- return username + principalSuffix;
+ &&
!sanitizedUsername.toLowerCase(Locale.ROOT).endsWith(principalSuffix.toLowerCase(Locale.ROOT)))
{
+ return sanitizedUsername + principalSuffix;
}
- return username;
+ return sanitizedUsername;
}
}
diff --git
a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
index e172efdd4..8aa52873e 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
@@ -35,6 +35,7 @@ import org.slf4j.LoggerFactory;
import javax.naming.AuthenticationNotSupportedException;
import javax.naming.NamingException;
import javax.naming.ldap.LdapContext;
+import javax.naming.ldap.Rdn;
/**
* An LDAP {@link org.apache.shiro.realm.Realm Realm} implementation utilizing
Sun's/Oracle's
@@ -238,11 +239,12 @@ public class DefaultLdapRealm extends AuthorizingRealm {
int prefixLength = prefix != null ? prefix.length() : 0;
int suffixLength = suffix != null ? suffix.length() : 0;
- StringBuilder sb = new StringBuilder(prefixLength + principal.length()
+ suffixLength);
+ String sanitizedPrincipal = Rdn.escapeValue(principal);
+ StringBuilder sb = new StringBuilder(prefixLength +
sanitizedPrincipal.length() + suffixLength);
if (prefixLength > 0) {
sb.append(prefix);
}
- sb.append(principal);
+ sb.append(sanitizedPrincipal);
if (suffixLength > 0) {
sb.append(suffix);
}