I'm testing this with Apache DS 1.0.2 running on Windows 2000 and
1.5.1 running on Mac OS X using ldapsearch on Mac OS X 10.4.
If I search for "(unknown=*)" I correctly get no results. But if I
search for "(&(unknown=*))" I get:
Caused by: javax.naming.NamingExc
eption: OID for name 'unknown' was not found within the OID registry
at org
.apache.directory.server.schema.registries.DefaultOidRegistry.getOid
(Default
OidRegistry.java:113)
at org.apache.directory.server.core.normalization.Nor
malizingVisitor.visit(NormalizingVisitor.java:88)
... 25 more
Other variations of boolean operators also fail, such as "(|(uid=*)
(unknown=*))" where "(uid=*)" by itself yields results.
According to RFC 4511 section 4.5.1, servers MUST NOT return errors
in this situation.
I found similar bugs, such as DIRSERVER-645 and DIRSERVER-836, but
nothing covering this exact situation.
The full ldapsearch command line and output:
$ ldapsearch -x -H ldap://localhost:10389 -D 'uid=admin,ou=system' -w
**** -b 'ou=system' -s sub '(&(unknown=*))' uid
# extended LDIF
#
# LDAPv3
# base <ou=system> with scope sub
# filter: (&(unknown=*))
# requesting: uid
#
# search result
search: 2
result: 36 Alias dereferencing problem
text: failed on search operation: Unexpected exception.:
SearchRequest
baseDn : 'ou=system'
filter : '(& (unknown=*) ) '
scop
e : whole subtree
typesOnly : false
no limit
Time Limit : no
limit
Deref Aliases : never Deref Aliases
attributes : 'uid
'
:
org.apache.directory.server.core.interceptor.InterceptorException: Unexp
ected exception. [Root exception is java.lang.RuntimeException: OID
for name
'unknown' was not found within the OID registry]
at org.apache.directory.s
erver.core.interceptor.InterceptorChain.throwInterceptorException
(Intercepto
rChain.java:1472)
at org.apache.directory.server.core.interceptor.Intercept
orChain.search(InterceptorChain.java:888)
at org.apache.directory.server.co
re.partition.PartitionNexusProxy.search(PartitionNexusProxy.java:492)
at or
g.apache.directory.server.core.partition.PartitionNexusProxy.search
(Partitio
nNexusProxy.java:434)
at org.apache.directory.server.core.jndi.ServerContex
t.doSearchOperation(ServerContext.java:249)
at org.apache.directory.server.
core.jndi.ServerDirContext.search(ServerDirContext.java:642)
at org.apache.
directory.server.ldap.support.SearchHandler.messageReceived
(SearchHandler.ja
va:376)
at
org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(
DemuxingIoHandler.java:141)
at org.apache.directory.server.ldap.LdapProtoco
lProvider$LdapProtocolHandler.messageReceived
(LdapProtocolProvider.java:428)
at org.apache.mina.common.support.AbstractIoFilterChain
$TailFilter.message
Received(AbstractIoFilterChain.java:570)
at org.apache.mina.common.support.
AbstractIoFilterChain.callNextMessageReceived
(AbstractIoFilterChain.java:299
)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1100(Abstr
actIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilte
rChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.a
pache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush
(SimpleProt
ocolDecoderOutput.java:58)
at org.apache.mina.filter.codec.ProtocolCodecFil
ter.messageReceived(ProtocolCodecFilter.java:176)
at org.apache.mina.common
.support.AbstractIoFilterChain.callNextMessageReceived
(AbstractIoFilterChain
.java:299)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1
100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.Abstra
ctIoFilterChain$EntryImpl$1.messageReceived
(AbstractIoFilterChain.java:648)
at
org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilt
er.java:220)
at org.apache.mina.filter.executor.ExecutorFilter$ProcessEvent
sRunnable.run(ExecutorFilter.java:264)
at java.util.concurrent.ThreadPoolEx
ecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.
ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thr
ead.run(Thread.java:613)
Caused by: java.lang.RuntimeException: OID for name
'unknown' was not found within the OID registry
at org.apache.directory.se
rver.core.normalization.NormalizingVisitor.visit
(NormalizingVisitor.java:93)
at
org.apache.directory.shared.ldap.filter.PresenceNode.accept(PresenceNod
e.java:97)
at org.apache.directory.shared.ldap.filter.BranchNode.accept
(Bra
nchNode.java:408)
at org.apache.directory.server.core.normalization.Normali
zationService.search(NormalizationService.java:210)
at org.apache.directory
.server.core.interceptor.InterceptorChain.search
(InterceptorChain.java:880)
... 21 more
Caused by: javax.naming.NamingException: OID for name 'unknown'
was not found within the OID registry
at org.apache.directory.server.schem
a.registries.DefaultOidRegistry.getOid(DefaultOidRegistry.java:113)
at org.
apache.directory.server.core.normalization.NormalizingVisitor.visit
(Normaliz
ingVisitor.java:88)
... 25 more
# numResponses: 1