From 594886afe7217e46fe1137db8356176f9dfec179 Mon Sep 17 00:00:00 2001 From: Mattias Hellborg Arthursson Date: Mon, 12 Aug 2013 12:45:16 +0200 Subject: [PATCH] LDAP-229: Default DN parser does not handle hash/sharp symbol correctly Applied patch and added suggested test cases. --- core/src/main/javacc/DnParserImpl.jj | 15 ++++++------- .../ldap/core/DistinguishedNameTest.java | 21 +++++++++++++++++++ ...ualListViewControlDirContextProcessor.java | 1 - 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/core/src/main/javacc/DnParserImpl.jj b/core/src/main/javacc/DnParserImpl.jj index 494539a6..35087668 100644 --- a/core/src/main/javacc/DnParserImpl.jj +++ b/core/src/main/javacc/DnParserImpl.jj @@ -46,16 +46,15 @@ PARSER_END(DnParserImpl) TOKEN: { <#ALPHA: ["a"-"z", "A"-"Z"] > } TOKEN: { <#DIGIT: ["0"-"9"]> } -TOKEN: { <#STRINGCHAR: ~[",","=","+","<",">","#",";","\\","\""]> } -TOKEN: { <#STRINGENDCHAR: ~[",","=","+","<",">","#",";","\\","\""," "]> } -TOKEN: { <#SPECIAL: [",","=","\r","+","<",">","#",";"]> } +TOKEN: { <#LEADCHAR: ~[",","+","<",">",";","\\","\"","#"," "]> } +TOKEN: { <#STRINGCHAR: ~[",","+","<",">",";","\\","\""]> } +TOKEN: { <#TRAILCHAR: ~[",","+","<",">",";","\\","\""," "]> } +TOKEN: { <#SPECIAL: [",","=","\r","+","<",">","#",";"," "]> } TOKEN: { <#HEXCHAR: ["0"-"9","a"-"f","A"-"F"]> } TOKEN: { <#HEXPAIR: > } TOKEN: { <#BACKSLASHCHAR: "\\"> } TOKEN: { <#PAIR: ( | | | )> } -TOKEN: { <#ESCAPEDSPACE: >} TOKEN: { <#ESCAPEDSTART: ( | )> } -TOKEN: { <#STRINGEND: ( | | )> } TOKEN: { @@ -73,11 +72,9 @@ TOKEN: { <#STRINGEND: ( | | )> } TOKEN: { ( | | )+ + ( ()+ | - ()+ - | - ()? ( | )* + ( | ) (( | )* ( | ))? )> } diff --git a/core/src/test/java/org/springframework/ldap/core/DistinguishedNameTest.java b/core/src/test/java/org/springframework/ldap/core/DistinguishedNameTest.java index 160cbaef..5020fd48 100644 --- a/core/src/test/java/org/springframework/ldap/core/DistinguishedNameTest.java +++ b/core/src/test/java/org/springframework/ldap/core/DistinguishedNameTest.java @@ -669,4 +669,25 @@ public class DistinguishedNameTest extends TestCase { System.clearProperty(DistinguishedName.KEY_CASE_FOLD_PROPERTY); } } + + public void testHashSignLdap229() { + assertEquals( + new DistinguishedName("cn=Foo\\#Bar"), + new DistinguishedName("cn=Foo#Bar") + ); + } + + public void testEqualsSignLdap229() { + assertEquals( + new DistinguishedName("cn=Foo\\=Bar"), + new DistinguishedName("cn=Foo=Bar") + ); + } + + public void testSpaceSignLdap229() { + assertEquals( + new DistinguishedName("cn=Foo\\ Bar"), + new DistinguishedName("cn=Foo Bar") + ); + } } diff --git a/sandbox/src/main/java/org/springframework/ldap/control/VirtualListViewControlDirContextProcessor.java b/sandbox/src/main/java/org/springframework/ldap/control/VirtualListViewControlDirContextProcessor.java index 6ab3c587..a94a2fde 100644 --- a/sandbox/src/main/java/org/springframework/ldap/control/VirtualListViewControlDirContextProcessor.java +++ b/sandbox/src/main/java/org/springframework/ldap/control/VirtualListViewControlDirContextProcessor.java @@ -22,7 +22,6 @@ import javax.naming.NamingException; import javax.naming.ldap.Control; import org.springframework.ldap.support.LdapUtils; -import org.springframework.util.ReflectionUtils; /** * DirContextProcessor implementation for managing a virtual list view.