[ 
https://issues.apache.org/jira/browse/DIRSERVER-1180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Karasulu reassigned DIRSERVER-1180:
----------------------------------------

    Assignee: Emmanuel Lecharny  (was: Alex Karasulu)

Found the problem and it persists.  I have a few grips here:

    (1) the decoder code should be throwing or taking us out with an exception 
which causes normal error handling where the LDAP server tells the client that 
it encountered a protocol error due to the request using a proper healthy 
response.
    (2) the decoder and ASN.1 handling code is so hard to comprehend and 
maintain that I would have to spend at least a day analyzing the code to figure 
out how to fix this problem properly and the fix is not trivial

Considering #2 I've given up and chosen to continue processing as many bugs as 
I can as fast as I can while delegating this one to Emmanuel.  But this 
situation needs to be fixed so we can all easily work together on this region 
of the code.  Please help us get here Emmanuel.

As for the recommended fix:

    Cause string prep functionality to condense sequence of '* ' asterisk 
characters into a single character unless of course these are escaped.  Then, 
after this, condensing operation, a determination must be made as to whether 
the assertion is still a substring expression or an existence expression.  This 
should not be hard and requires only one more character read ahead to 
determine: must find out if the assertion ends after the last asterisk, if not 
then it's substring, if so it's an existence assertion. 

    Looking at the decoder code this can be done but you need to take some care 
when encountering an asterisk after the '=' inside the assertion before 
deciding to determine what kind of filter assertion node this is.  That's when 
the condensation of a series of '*' to a single asterisk must be performed.


> NPE and hanging search request when using a filter with empty substring 
> sequence
> --------------------------------------------------------------------------------
>
>                 Key: DIRSERVER-1180
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1180
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 1.5.3, 1.5.2
>            Reporter: Stefan Seelmann
>            Assignee: Emmanuel Lecharny
>            Priority: Blocker
>             Fix For: 1.5.3
>
>
> When starting a search request using the seachfilter (cn=**) the request 
> lasts forever. I testet with JNDI and ldapsearch command. 
> Here is the server log:
> [00:22:01] ERROR 
> [org.apache.directory.shared.ldap.codec.actions.StoreAnyAction] - The 
> substring any filter is empty
> [00:22:01] WARN 
> [org.apache.directory.server.ldap.LdapServer$LdapProtocolHandler] - 
> [/127.0.0.1:47315] Unexpected exception from exceptionCaught handler.
> java.lang.NullPointerException: message
>       at 
> org.apache.mina.common.IoFilter$WriteRequest.<init>(IoFilter.java:333)
>       at 
> org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:177)
>       at 
> org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:168)
>       at 
> org.apache.directory.server.ldap.LdapServer$LdapProtocolHandler.exceptionCaught(LdapServer.java:1104)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.exceptionCaught(AbstractIoFilterChain.java:564)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643)
>       at 
> org.apache.mina.common.IoFilterAdapter.exceptionCaught(IoFilterAdapter.java:75)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53)
>       at 
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643)
>       at 
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:224)
>       at 
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:636)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to