mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-17 13:55:20 +00:00
6997561: A request for better error handling in JNDI
Reviewed-by: robm
This commit is contained in:
parent
6232632ef8
commit
e9f2c8444e
@ -143,7 +143,7 @@ public class Continuation extends ResolveResult {
|
||||
e.setRemainingName(remainingName);
|
||||
e.setResolvedObj(resolvedObj);
|
||||
|
||||
if (starter == null)
|
||||
if (starter == null || starter.isEmpty())
|
||||
e.setResolvedName(null);
|
||||
else if (remainingName == null)
|
||||
e.setResolvedName(starter);
|
||||
|
||||
118
jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java
Normal file
118
jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java
Normal file
@ -0,0 +1,118 @@
|
||||
/**
|
||||
* @test
|
||||
* @bug 6997561
|
||||
* @summary A request for better error handling in JNDI
|
||||
*/
|
||||
|
||||
import java.net.Socket;
|
||||
import java.net.ServerSocket;
|
||||
import java.io.*;
|
||||
import javax.naming.*;
|
||||
import javax.naming.directory.*;
|
||||
import javax.naming.ldap.*;
|
||||
import java.util.Collections;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class EmptyNameSearch {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
// Start the LDAP server
|
||||
Server s = new Server();
|
||||
s.start();
|
||||
Thread.sleep(3000);
|
||||
|
||||
// Setup JNDI parameters
|
||||
Hashtable env = new Hashtable();
|
||||
env.put(Context.INITIAL_CONTEXT_FACTORY,
|
||||
"com.sun.jndi.ldap.LdapCtxFactory");
|
||||
env.put(Context.PROVIDER_URL, "ldap://localhost:" + s.getPortNumber());
|
||||
|
||||
try {
|
||||
|
||||
// Create initial context
|
||||
System.out.println("Client: connecting...");
|
||||
DirContext ctx = new InitialDirContext(env);
|
||||
|
||||
System.out.println("Client: performing search...");
|
||||
ctx.search(new LdapName(Collections.EMPTY_LIST), "cn=*", null);
|
||||
ctx.close();
|
||||
|
||||
// Exit
|
||||
throw new RuntimeException();
|
||||
|
||||
} catch (NamingException e) {
|
||||
System.err.println("Passed: caught the expected Exception - " + e);
|
||||
|
||||
} catch (Exception e) {
|
||||
System.err.println("Failed: caught an unexpected Exception - " + e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
static class Server extends Thread {
|
||||
|
||||
private int serverPort = 0;
|
||||
private byte[] bindResponse = {
|
||||
0x30, 0x0C, 0x02, 0x01, 0x01, 0x61, 0x07, 0x0A,
|
||||
0x01, 0x00, 0x04, 0x00, 0x04, 0x00
|
||||
};
|
||||
private byte[] searchResponse = {
|
||||
0x30, 0x0C, 0x02, 0x01, 0x02, 0x65, 0x07, 0x0A,
|
||||
0x01, 0x02, 0x04, 0x00, 0x04, 0x00
|
||||
};
|
||||
|
||||
Server() {
|
||||
}
|
||||
|
||||
public int getPortNumber() {
|
||||
return serverPort;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
ServerSocket serverSock = new ServerSocket(0);
|
||||
serverPort = serverSock.getLocalPort();
|
||||
System.out.println("Server: listening on port " + serverPort);
|
||||
|
||||
Socket socket = serverSock.accept();
|
||||
System.out.println("Server: connection accepted");
|
||||
|
||||
InputStream in = socket.getInputStream();
|
||||
OutputStream out = socket.getOutputStream();
|
||||
|
||||
// Read the LDAP BindRequest
|
||||
System.out.println("Server: reading request...");
|
||||
while (in.read() != -1) {
|
||||
in.skip(in.available());
|
||||
break;
|
||||
}
|
||||
|
||||
// Write an LDAP BindResponse
|
||||
System.out.println("Server: writing response...");
|
||||
out.write(bindResponse);
|
||||
out.flush();
|
||||
|
||||
// Read the LDAP SearchRequest
|
||||
System.out.println("Server: reading request...");
|
||||
while (in.read() != -1) {
|
||||
in.skip(in.available());
|
||||
break;
|
||||
}
|
||||
|
||||
// Write an LDAP SearchResponse
|
||||
System.out.println("Server: writing response...");
|
||||
out.write(searchResponse);
|
||||
out.flush();
|
||||
|
||||
in.close();
|
||||
out.close();
|
||||
socket.close();
|
||||
serverSock.close();
|
||||
|
||||
} catch (IOException e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user