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 --- src/main/java/com/c2kernel/lookup/LDAPLookup.java | 2 +- .../java/com/c2kernel/lookup/LDAPLookupUtils.java | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/c2kernel/lookup/LDAPLookup.java b/src/main/java/com/c2kernel/lookup/LDAPLookup.java index 3a336dd..72a847d 100644 --- a/src/main/java/com/c2kernel/lookup/LDAPLookup.java +++ b/src/main/java/com/c2kernel/lookup/LDAPLookup.java @@ -272,7 +272,7 @@ public class LDAPLookup int i=0; while (i', ';', '/'}; + 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