Description
ApacheDS is having a problem decoding certain LDAP search filters involving nested filters and substring filter from LDAP Message.
This problem was originally reported here:
http://groups-beta.google.com/group/safehaus/browse_thread/thread/5100becc932fad8c
This problem can be reproduced in ApacheDS 1.0.0, 1.0.1, and 1.5.0.
Steps to reproduce:
1. Edit org/apache/directory/shared/ldap/codec/search/SearchRequest.java, add the following at the end
of unstackFilters() method (line 430):
System.out.println("Filter: "+filter);
2. Compile and start ApacheDS server.
3. Run the following search:
ldapsearch -h localhost -p 10389 -D uid=admin,ou=system -w secret -x
-b "dc=Example,dc=com" "(&(mail=a)(|(cn=b*)(sn=c)))"
Here's the output:
Filter: &(mail=a)
Filter: &(mail=a)(|(b*))
Filter: &(mail=a)(|(b*))(sn=c)
Notice that the position of the parenthesises has changed. If the '*' is removed, it will work just fine.