diff options
Diffstat (limited to 'src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java')
| -rw-r--r-- | src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java b/src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java index 1ac4b3b..0964565 100644 --- a/src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java +++ b/src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java @@ -28,6 +28,7 @@ import com.novell.ldap.LDAPSearchResults; final public class LDAPLookupUtils
{
static final char[] META_CHARS = {'+', '=', '"', ',', '<', '>', ';', '/'};
+ static final String[] META_ESCAPED = {"2B", "3D", "22", "2C", "3C", "3E", "3B", "2F"};
static public LDAPEntry getEntry(LDAPConnection ld, String dn,int dereference)
throws ObjectNotFoundException
{
@@ -296,11 +297,11 @@ final public class LDAPLookupUtils escapedStr = escapedStr.replaceAll("\\\\","\\\\");
//Positional characters - see RFC 2253
- escapedStr = escapedStr.replaceAll("^#","\\\\#"); // TODO: active directory requires hash to be escaped everywhere
- escapedStr = escapedStr.replaceAll("^ | $","\\\\ ");
+ escapedStr = escapedStr.replaceAll("^#","\\\\23"); // TODO: active directory requires hash to be escaped everywhere
+ escapedStr = escapedStr.replaceAll("^ | $","\\\\20");
- for (char element : META_CHARS) {
- escapedStr = escapedStr.replaceAll("\\"+element,"\\\\" + element);
+ for (int i=0; i<META_CHARS.length; i++) {
+ escapedStr = escapedStr.replaceAll("\\"+META_CHARS[i],"\\\\"+ META_ESCAPED[i]);
}
if (!name.equals(escapedStr)) Logger.msg(3, "LDAP DN "+name+" escaped to "+escapedStr);
return escapedStr;
@@ -311,14 +312,14 @@ final public class LDAPLookupUtils String unescapedStr = new String(dn);
//Positional characters - see RFC 2253
- unescapedStr = unescapedStr.replaceAll("^\\\\#", "#"); // TODO: active directory requires hash to be escaped everywhere
- unescapedStr = unescapedStr.replaceAll("^\\\\ |\\\\ $", " ");
+ unescapedStr = unescapedStr.replaceAll("^\\\\23", "#"); // TODO: active directory requires hash to be escaped everywhere
+ unescapedStr = unescapedStr.replaceAll("^\\\\20|\\\\20$", " ");
- for (char element : META_CHARS) {
- unescapedStr = unescapedStr.replaceAll("\\\\" + element, ""+element);
+ for (int i=0; i<META_CHARS.length; i++) {
+ unescapedStr = unescapedStr.replaceAll("\\\\" + META_ESCAPED[i], ""+META_CHARS[i]);
}
- //Any remaining backslashes
+ //Any remaining escaped backslashes
unescapedStr = unescapedStr.replaceAll("\\\\","\\");
if (!dn.equals(unescapedStr)) Logger.msg(3, "LDAP DN "+dn+" unescaped to "+unescapedStr);
|
