From b4f8505e226f8c2e48b9d734f2f10f56f22b1c22 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 14 Jun 2013 16:45:37 +0200 Subject: Escape DNs with hex codes instead - more compatible --- .../java/com/c2kernel/lookup/LDAPLookupUtils.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src/main/java/com/c2kernel/lookup/LDAPLookupUtils.java') 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