LDAP-229: Default DN parser does not handle hash/sharp symbol correctly
Applied patch and added suggested test cases.
This commit is contained in:
@@ -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>))?
|
||||
)>
|
||||
}
|
||||
|
||||
|
||||
@@ -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")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user