8230967: Improve Registry support of clients
Reviewed-by: skoivu, smarks, rhalade
This commit is contained in:
parent
24a7ba0c61
commit
be35f9ef53
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,6 +29,7 @@ import java.lang.reflect.InvocationHandler;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.rmi.Remote;
|
||||
import java.rmi.RemoteException;
|
||||
import java.rmi.UnexpectedException;
|
||||
import java.rmi.activation.Activatable;
|
||||
import java.util.Map;
|
||||
@ -206,6 +207,13 @@ public class RemoteObjectInvocationHandler
|
||||
throw new IllegalArgumentException(
|
||||
"proxy not Remote instance");
|
||||
}
|
||||
|
||||
// Verify that the method is declared on an interface that extends Remote
|
||||
Class<?> decl = method.getDeclaringClass();
|
||||
if (!Remote.class.isAssignableFrom(decl)) {
|
||||
throw new RemoteException("Method is not Remote: " + decl + "::" + method);
|
||||
}
|
||||
|
||||
return ref.invoke((Remote) proxy, method, args,
|
||||
getMethodHash(method));
|
||||
} catch (Exception e) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,6 +29,7 @@ import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInput;
|
||||
import java.io.ObjectOutput;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.net.InetAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
@ -553,6 +554,9 @@ public class TCPEndpoint implements Endpoint {
|
||||
host = in.readUTF();
|
||||
port = in.readInt();
|
||||
csf = (RMIClientSocketFactory) in.readObject();
|
||||
if (Proxy.isProxyClass(csf.getClass())) {
|
||||
throw new IOException("Invalid SocketFactory");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user