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

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


The following commit(s) were added to refs/heads/main by this push:
     new 9063406e7 Using Rdn.escapeValues()
9063406e7 is described below

commit 9063406e70acbb90a6d1c1f3c69e01b8893bd1dd
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 86c398e83..4d881929e 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 513917523..6e9c3d534 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);
         }

Reply via email to