directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Karasulu (JIRA)" <directory-...@incubator.apache.org>
Subject [jira] Resolved: (DIREVE-295) DirContext.search() with null Name results in NPE
Date Fri, 28 Oct 2005 00:27:55 GMT
     [ http://issues.apache.org/jira/browse/DIREVE-295?page=all ]
     
Alex Karasulu resolved DIREVE-295:
----------------------------------

    Fix Version: 0.9.3
     Resolution: Won't Fix

Hi Enrique,

I did not know the answer to this so I tested it with the SUN JNDI LDAP provider using this
code here:

    public void testNullNameToCtxSearch() throws NamingException
    {
        final Hashtable env = new Hashtable();

        env.put( Context.PROVIDER_URL, "ldap://localhost:" + port + "/dc=aPache,dc=org" );
        env.put("java.naming.ldap.version", "3");
        env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
        env.put( Context.SECURITY_CREDENTIALS, "secret" );
        env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
        InitialDirContext ctx = new InitialDirContext( env );
        Name nullName = null;
        ctx.search( nullName, "(objectClass=*)", new SearchControls() );
    }

Here's the NPE I got from the NamingSubsystem:

java.lang.NullPointerException
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:330)
	at javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(InitialDirContext.java:99)
	at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:245)
	at org.apache.ldap.server.MiscTest.testNullNameToCtxSearch(MiscTest.java:328)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:31)

Just to double check I tested handing off null to our provider to look at the stack trace:

java.lang.NullPointerException
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:330)
	at javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(InitialDirContext.java:99)
	at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:245)
	at org.apache.ldap.server.MiscTest.testBogusAttributeInSearchFilter(MiscTest.java:316)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:31)

The same exact trace due to IDC wrapper.  If IDC behaves this way I think its ok for our contexts
to behave in the same manner. 



> DirContext.search() with null Name results in NPE
> -------------------------------------------------
>
>          Key: DIREVE-295
>          URL: http://issues.apache.org/jira/browse/DIREVE-295
>      Project: Directory Server
>         Type: Improvement
>   Components: jndi-provider
>     Reporter: Enrique Rodriguez
>     Assignee: Alex Karasulu
>     Priority: Minor
>      Fix For: 0.9.3

>
> This is a minor issue I am marking as an improvement since the JNDI API doesn't appear
to say explicitly what the behavior is, so I'm entering this issue to document it.  The issue
is that if you supply a null Name as the name to search in DirContext.search() you get a NPE.
 If you supply a null String, however, it is treated as the empty String, which indicates
a search at the current context's name.  IMO, a null Name should be treated like the empty
String.
> So, a null Name fails with NPE:
>         Name name = null;
>         NamingEnumeration answer = ctx.search( name, matchAttrs, attrIDs );
> java.lang.NullPointerException
> 	at org.apache.ldap.common.name.LdapName.addAll(LdapName.java:527)
> 	at org.apache.ldap.server.jndi.ServerContext.buildTarget(ServerContext.java:843)
> 	at org.apache.ldap.server.jndi.ServerDirContext.search(ServerDirContext.java:488)
> ...
> But, a null String will work fine:
>         String name = null;
>         NamingEnumeration answer = ctx.search( name, matchAttrs, attrIDs );
> Which is the same as the empty String, which works fine, too;
>         String name = "";
>         NamingEnumeration answer = ctx.search( name, matchAttrs, attrIDs );

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message