From d8678b4b044145c76207ec2c93e894893767b35c Mon Sep 17 00:00:00 2001 From: xuelei Date: Thu, 2 Dec 2010 23:44:01 -0800 Subject: [PATCH] 6979376: to have ldap filters tolerate underscore character in object identifier Reviewed-by: weijun --- src/share/classes/com/sun/jndi/ldap/Filter.java | 15 ++++++++++++--- test/com/sun/jndi/ldap/InvalidLdapFilters.java | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/share/classes/com/sun/jndi/ldap/Filter.java b/src/share/classes/com/sun/jndi/ldap/Filter.java index 626f1f86f..467b8db90 100644 --- a/src/share/classes/com/sun/jndi/ldap/Filter.java +++ b/src/share/classes/com/sun/jndi/ldap/Filter.java @@ -427,7 +427,10 @@ final class Filter { } } else { // descriptor - if (filter[i] != '-' && + // The underscore ("_") character is not allowed by + // the LDAP specification. We allow it here to + // tolerate the incorrect use in practice. + if (filter[i] != '-' && filter[i] != '_' && !(filter[i] >= '0' && filter[i] <= '9') && !(filter[i] >= 'A' && filter[i] <= 'Z') && !(filter[i] >= 'a' && filter[i] <= 'z')) { @@ -467,7 +470,10 @@ final class Filter { break; } - if (filter[i] != '-' && + // The underscore ("_") character is not allowed by + // the LDAP specification. We allow it here to + // tolerate the incorrect use in practice. + if (filter[i] != '-' && filter[i] != '_' && !(filter[i] >= '0' && filter[i] <= '9') && !(filter[i] >= 'A' && filter[i] <= 'Z') && !(filter[i] >= 'a' && filter[i] <= 'z')) { @@ -515,7 +521,10 @@ final class Filter { } } else { // descriptor - if (filter[j] != '-' && + // The underscore ("_") character is not allowed by + // the LDAP specification. We allow it here to + // tolerate the incorrect use in practice. + if (filter[j] != '-' && filter[j] != '_' && !(filter[j] >= '0' && filter[j] <= '9') && !(filter[j] >= 'A' && filter[j] <= 'Z') && !(filter[j] >= 'a' && filter[j] <= 'z')) { diff --git a/test/com/sun/jndi/ldap/InvalidLdapFilters.java b/test/com/sun/jndi/ldap/InvalidLdapFilters.java index 5cadd3ad5..e0e0e906a 100644 --- a/test/com/sun/jndi/ldap/InvalidLdapFilters.java +++ b/test/com/sun/jndi/ldap/InvalidLdapFilters.java @@ -48,6 +48,8 @@ * @run main/othervm InvalidLdapFilters valid (sn;lang-en:dn:2.4.6.8.10:=Barney) * @run main/othervm InvalidLdapFilters valid (&(objectClass=Person)(|(sn=Jensen)(cn=Bab*))) + * @run main/othervm InvalidLdapFilters valid + (orcluserapplnprovstatus;EMAIL_email=PROVISIONING_FAILURE) * @run main/othervm InvalidLdapFilters invalid "(&(cn=Robert Dean)))" * @run main/othervm InvalidLdapFilters invalid (&|(cn=Bob)) * @run main/othervm InvalidLdapFilters invalid (&&(cn=Bob)) -- GitLab