[ 
https://issues.apache.org/jira/browse/DIRSERVER-2384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17754408#comment-17754408
 ] 

Emmanuel Lécharny commented on DIRSERVER-2384:
----------------------------------------------

Hi Roland,

 

sorry for the late response...

This is a clear bug in the SyncReplSearchListener:
 
{code:java}
private boolean isConfigEntry( Entry entry )
{
// we can do Dn.isDescendantOf but in this part of the
// server the DNs are all normalized and a simple string compare should
// do the trick
 
String name = Strings.toLowerCase( entry.getDn().getName() );
 
if ( name.endsWith( replConsumerConfigDn )
|| name.endsWith( schemaDn )
|| name.endsWith( replConsumerDn ) )
{
returntrue;
}
 
// do not replicate the changes made to transport config entries
returnname.startsWith( "ads-transportid" ) && name.endsWith( 
ServerDNConstants.CONFIG_DN );
}
 
{code}
 
We should *not* assume that the DN is in pure ascii. The comment says it all 
and is wrong from the get go.

Considering (rightfully) that  the DN is normalized is irrelevant, bec ause 
normalized != pure Ascii. We *must* use the isDescendantOf ùethod.

Thanks for the report !

> Capitalization issue?
> ---------------------
>
>                 Key: DIRSERVER-2384
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2384
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.0.0-M24
>            Reporter: Roland Szabó
>            Priority: Critical
>
> Received a stack trace of this exception:
> OTHER: failed for MessageType : MODIFY_REQUEST
> Message ID : 2100
>     Modify Request
>         Object : 'cn=TURÁN Ľudovít,ou=zimbra,ou=people,dc=leier'
>             Modification[0]
>                 Operation :  add
>                 Modification
> employeeType: 
> seafileorg.apache.directory.api.ldap.model.message.ModifyRequestImpl@63837e55:
>  317:
> java.lang.ArrayIndexOutOfBoundsException: 317
>       at 
> org.apache.directory.api.util.Strings.toLowerCaseAscii(Strings.java:1872)
>       at 
> org.apache.directory.server.ldap.replication.provider.SyncReplSearchListener.isConfigEntry(SyncReplSearchListener.java:547)
>       at 
> org.apache.directory.server.ldap.replication.provider.SyncReplSearchListener.entryModified(SyncReplSearchListener.java:306)
>       at 
> org.apache.directory.server.core.event.EventInterceptor.fire(EventInterceptor.java:165)
>       at 
> org.apache.directory.server.core.event.EventInterceptor.modify(EventInterceptor.java:320)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.subtree.SubentryInterceptor.modify(SubentryInterceptor.java:1220)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.collective.CollectiveAttributeInterceptor.modify(CollectiveAttributeInterceptor.java:165)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.operational.OperationalAttributeInterceptor.modify(OperationalAttributeInterceptor.java:449)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.schema.SchemaInterceptor.modify(SchemaInterceptor.java:1206)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.hash.ConfigurableHashingInterceptor.modify(ConfigurableHashingInterceptor.java:185)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.kerberos.KeyDerivationInterceptor.modify(KeyDerivationInterceptor.java:212)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.exception.ExceptionInterceptor.modify(ExceptionInterceptor.java:252)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.admin.AdministrativePointInterceptor.modify(AdministrativePointInterceptor.java:1453)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.modify(DefaultAuthorizationInterceptor.java:263)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.authz.AciAuthorizationInterceptor.modify(AciAuthorizationInterceptor.java:814)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.referral.ReferralInterceptor.modify(ReferralInterceptor.java:317)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.authn.AuthenticationInterceptor.processPasswordPolicydModify(AuthenticationInterceptor.java:931)
>       at 
> org.apache.directory.server.core.authn.AuthenticationInterceptor.modify(AuthenticationInterceptor.java:890)
>       at 
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:506)
>       at 
> org.apache.directory.server.core.normalization.NormalizationInterceptor.modify(NormalizationInterceptor.java:216)
>       at 
> org.apache.directory.server.core.DefaultOperationManager.modify(DefaultOperationManager.java:886)
>       at 
> org.apache.directory.server.core.shared.DefaultCoreSession.modify(DefaultCoreSession.java:975)
>       at 
> org.apache.directory.server.core.shared.DefaultCoreSession.modify(DefaultCoreSession.java:958)
>       at 
> org.apache.directory.server.ldap.handlers.request.ModifyRequestHandler.handle(ModifyRequestHandler.java:56)
>       at 
> org.apache.directory.server.ldap.handlers.request.ModifyRequestHandler.handle(ModifyRequestHandler.java:39)
>       at 
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:207)
>       at 
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56)
>       at 
> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:243)
>       at 
> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:216)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:858)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
>       at 
> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
>       at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
>       at 
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:476)
>       at 
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:430)
>       at java.lang.Thread.run(Thread.java:748)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@directory.apache.org
For additional commands, e-mail: dev-h...@directory.apache.org

Reply via email to