LDAP-229: Default DN parser does not handle hash/sharp symbol correctly

Applied patch and added suggested test cases.
This commit is contained in:
Mattias Hellborg Arthursson
2013-08-12 12:45:16 +02:00
parent f15ea1cd00
commit 594886afe7
3 changed files with 27 additions and 10 deletions

View File

@@ -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: <HEXCHAR> <HEXCHAR>> }
TOKEN: { <#BACKSLASHCHAR: "\\"> }
TOKEN: { <#PAIR: <BACKSLASHCHAR> (<SPECIAL> | <BACKSLASHCHAR> | <QUOTECHAR> | <HEXPAIR> )> }
TOKEN: { <#ESCAPEDSPACE: <BACKSLASHCHAR> <SPACE>>}
TOKEN: { <#ESCAPEDSTART: <BACKSLASHCHAR> (<HASHCHAR> | <SPACE>)> }
TOKEN: { <#STRINGEND: (<STRINGENDCHAR> | <PAIR> | <ESCAPEDSPACE>)> }
<DEFAULT> TOKEN:
{
@@ -73,11 +72,9 @@ TOKEN: { <#STRINGEND: (<STRINGENDCHAR> | <PAIR> | <ESCAPEDSPACE>)> }
<ATTRVALUE_S> TOKEN:
{
<ATTRVALUE:
(<QUOTECHAR> (<STRINGCHAR> | <SPECIAL> | <PAIR>)+ <QUOTECHAR>
(<HASHCHAR> (<HEXPAIR>)+
|
<HASHCHAR> (<HEXPAIR>)+
|
(<ESCAPEDSTART>)? ( <STRINGCHAR> | <PAIR> )* <STRINGEND>
(<LEADCHAR> | <PAIR>) ((<STRINGCHAR> | <PAIR>)* (<TRAILCHAR> | <PAIR>))?
)>
}

View File

@@ -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")
);
}
}

View File

@@ -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.