Issue Details (XML | Word | Printable)

Key: DIRSERVER-591
Type: Bug Bug
Status: Closed Closed
Resolution: Cannot Reproduce
Priority: Major Major
Assignee: Emmanuel Lecharny
Reporter: Tony Blanchard
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Directory ApacheDS

Putting some chars like "é" in common name with JXPlorer or my client code creates problems

Created: 11/Mar/06 12:05 AM   Updated: 02/Dec/08 10:49 PM
Return to search
Component/s: None
Affects Version/s: 1.0-RC1
Fix Version/s: None

Time Tracking:
Not Specified

Environment:
Win XP SP2
JRE 1.5.0_04
ApacheDS RC1.0

Resolution Date: 16/Aug/06 10:41 PM


 Description  « Hide
It seems the apacheds database does not like "é" chars.
I even think trying to destroy such entries containing such chars lead to database severe corruption but I have no real and systematic clue yet.
To reproduce, simply try to put a group with a "é" char in the cn attribute with JXplorer. Now, try to modify it. Exception araise.
Now, in my client code, I see SearchResult returned with bad results in getName() or getNameInNameSpace(). It seems it returns a string with " " replaced by "%20" and "é" char replaced with a value like /ufffd or something like this.
Nevertheless, if I retrieve the attributes from the SearchResult I get the correct "cn" value with a correct "é" char in it


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Emmanuel Lecharny added a comment - 11/Mar/06 07:47 AM
Tony,

have you ried with another tool than jxplorer? Let's say LdapBrowser, or just a simple ldif file...

I think it should work, but there may be a bug somewhere... Could you isolate the problem you experienced with jxplorer and reproduce it with ldapbrowser?

Emmanuel Lécharny (with a 'é', testé et approuvé sur ADS :)

Tony Blanchard added a comment - 13/Mar/06 04:58 PM
Hi Emmanuel,

I did not try with another tool because I have no other tool yet.
Nevertheless, I found the problem on my client code and tried with JXplorer which has the same pb.

I have seen something to tell you about to reproduce in JXplorer.
First of all, I have ACLs enabled and forgot to tell about it in environment...

In JXplorer, under groups as admin, create a new entry with classes Top and groupOfUniqueNames.
Enter the common name like "cn=secrétaire" and valiadate the creation box. In the right table of JXplorer, add as uniqueMember "uid=admin, ou=system".
Submit changes to LDAP server. It works and you can look at the entry event if you look another one and come back to "secrétaire".
Now, log out and login as admin. Go to "secrétaire" and there is an exception with these details :


javax.naming.NameNotFoundException: [LDAP: error code 32 - failed on search operation:
    SearchRequest
        baseDn : 'cn=secr?taire,ou=groups,ou=system'
        filter : '(objectClass=*) '
        scope : base object
        typesOnly : false
no limit
        Time Limit : no limit
        Deref Aliases : deref Finding Base Obj
        attributes :
:
org.apache.directory.shared.ldap.exception.LdapNameNotFoundException: Attempt to search under non-existant entry: cn=secr?taire,ou=groups,ou=system
at org.apache.directory.server.core.exception.ExceptionService.assertHasEntry(ExceptionService.java:377)
at org.apache.directory.server.core.exception.ExceptionService.search(ExceptionService.java:353)
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1257)
at org.apache.directory.server.core.authz.AuthorizationService.search(AuthorizationService.java:899)
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1257)
at org.apache.directory.server.core.referral.ReferralService.search(ReferralService.java:905)
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1257)
at org.apache.directory.server.core.authn.AuthenticationService.search(AuthenticationService.java:388)
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1257)
at org.apache.directory.server.core.normalization.NormalizationService.search(NormalizationService.java:180)
at org.apache.directory.server.core.interceptor.InterceptorChain.search(InterceptorChain.java:822)
at org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy.search(DirectoryPartitionNexusProxy.java:461)
at org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy.search(DirectoryPartitionNexusProxy.java:406)
at org.apache.directory.server.core.jndi.ServerDirContext.search(ServerDirContext.java:526)
at org.apache.directory.server.ldap.support.SearchHandler.messageReceived(SearchHandler.java:265)
at org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:128)
at org.apache.directory.server.ldap.LdapProtocolProvider$LdapProtocolHandler.messageReceived(LdapProtocolProvider.java:431)
at org.apache.mina.common.support.AbstractIoFilterChain$2.messageReceived(AbstractIoFilterChain.java:189)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:494)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:761)
at org.apache.mina.filter.LoggingFilter.messageReceived(LoggingFilter.java:87)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:494)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:761)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:91)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:494)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:761)
at org.apache.mina.filter.ThreadPoolFilter.processEvent(ThreadPoolFilter.java:665)
at org.apache.mina.filter.ThreadPoolFilter$Worker.processEvents(ThreadPoolFilter.java:421)
at org.apache.mina.filter.ThreadPoolFilter$Worker.run(ThreadPoolFilter.java:376)
]; remaining name 'cn=secr taire,ou=groups,ou=system'

If this is not enought to help i will try to install the tool you tell me about.
Tony

Emmanuel Lecharny added a comment - 25/Jun/06 08:03 PM
I don't know about JXplorer, but with LdapBrowser, if you modify an entry (let say cn=lecharny, ou=users, ou=system to cn=lécharny, ou=users, ou=system), it works if you select the 'with children' option.

We must create a test case for this one, I think.

(tested on 1.0-RC4-SNAPSHOT)

Emmanuel Lecharny added a comment - 16/Aug/06 10:41 PM
I have tested the server - in branches/apacheds/1.0-trunks, which will be the 1.0-RC4 release -, following the steps in jexplorer; (creating a group where cn=secrétaire, etc ...), but I can't reproduce the problem.

Can you confirm that it has been fixed? If it's not, feel free to repoen the issue.

Emmanuel Lecharny added a comment - 02/Dec/08 10:49 PM
1.0 has been released more than 2 years ago ...