--- a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java Thu Mar 28 06:55:42 2013 -0400
+++ b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java Thu Mar 28 14:34:18 2013 -0700
@@ -85,8 +85,8 @@
private int state = ST_UNINITIALIZED;
// Binding
- private SocketAddress localAddress;
- private SocketAddress remoteAddress;
+ private InetSocketAddress localAddress;
+ private InetSocketAddress remoteAddress;
// Our socket adaptor, if any
private DatagramSocket socket;
@@ -168,7 +168,8 @@
synchronized (stateLock) {
if (!isOpen())
throw new ClosedChannelException();
- return localAddress;
+ // Perform security check before returning address
+ return Net.getRevealedLocalAddress(localAddress);
}
}
@@ -721,6 +722,7 @@
}
}
+ @Override
public DatagramChannel connect(SocketAddress sa) throws IOException {
int localPort = 0;
@@ -742,7 +744,7 @@
// Connection succeeded; disallow further invocation
state = ST_CONNECTED;
- remoteAddress = sa;
+ remoteAddress = isa;
sender = isa;
cachedSenderInetAddress = isa.getAddress();
cachedSenderPort = isa.getPort();
@@ -761,7 +763,7 @@
synchronized (stateLock) {
if (!isConnected() || !isOpen())
return this;
- InetSocketAddress isa = (InetSocketAddress)remoteAddress;
+ InetSocketAddress isa = remoteAddress;
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkConnect(isa.getAddress().getHostAddress(),