diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch')
-rw-r--r-- | java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch b/java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch deleted file mode 100644 index e94edecbc50b..000000000000 --- a/java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch +++ /dev/null @@ -1,114 +0,0 @@ -# HG changeset patch -# User andrew -# Date 1371826938 18000 -# Node ID ccd06d9c7258aea155d7053d399431bcd1af4405 -# Parent 662fbd43808413b2bd7ae4ae95683da98999023e -Fix up 8001318 - -diff --git a/src/share/classes/java/net/ServerSocket.java b/src/share/classes/java/net/ServerSocket.java ---- jdk/src/share/classes/java/net/ServerSocket.java -+++ jdk/src/share/classes/java/net/ServerSocket.java -@@ -363,7 +363,7 @@ - } - return in; - } catch (SecurityException e) { -- return InetAddress.getLoopbackAddress(); -+ return InetAddress.impl.loopbackAddress(); - } catch (SocketException e) { - // nothing - // If we're bound, the impl has been created -@@ -675,7 +675,7 @@ - if (!NetUtil.doRevealLocalAddress() && - System.getSecurityManager() != null) - { -- in = InetAddress.getLoopbackAddress(); -+ in = InetAddress.impl.loopbackAddress(); - } else { - in = impl.getInetAddress(); - } -diff --git a/src/share/classes/java/net/Socket.java b/src/share/classes/java/net/Socket.java ---- jdk/src/share/classes/java/net/Socket.java -+++ jdk/src/share/classes/java/net/Socket.java -@@ -666,7 +666,7 @@ - in = InetAddress.anyLocalAddress(); - } - } catch (SecurityException e) { -- in = InetAddress.getLoopbackAddress(); -+ in = InetAddress.impl.loopbackAddress(); - } catch (Exception e) { - in = InetAddress.anyLocalAddress(); // "0.0.0.0" - } -diff --git a/src/share/classes/sun/nio/ch/Net.java b/src/share/classes/sun/nio/ch/Net.java ---- jdk/src/share/classes/sun/nio/ch/Net.java -+++ jdk/src/share/classes/sun/nio/ch/Net.java -@@ -29,7 +29,8 @@ - import java.lang.reflect.*; - import java.net.*; - import java.nio.channels.*; -- -+import java.security.AccessController; -+import java.security.PrivilegedExceptionAction; - - class Net { // package-private - -@@ -233,4 +234,60 @@ - initIDs(); - } - -+ /** -+ * Returns the local address after performing a SecurityManager#checkConnect. -+ */ -+ static InetSocketAddress getRevealedLocalAddress(InetSocketAddress addr) { -+ SecurityManager sm = System.getSecurityManager(); -+ if (addr == null || sm == null) -+ return addr; -+ -+ if (!getRevealLocalAddress()) { -+ // Return loopback address only if security check fails -+ try{ -+ sm.checkConnect(addr.getAddress().getHostAddress(), -1); -+ //Security check passed -+ } catch (SecurityException e) { -+ //Return loopback address -+ addr = getLoopbackAddress(addr.getPort()); -+ } -+ } -+ return addr; -+ } -+ -+ static String getRevealedLocalAddressAsString(InetSocketAddress addr) { -+ if (!getRevealLocalAddress() && System.getSecurityManager() != null) -+ addr = getLoopbackAddress(addr.getPort()); -+ return addr.toString(); -+ } -+ -+ private static boolean getRevealLocalAddress() { -+ if (!propRevealLocalAddress) { -+ try { -+ revealLocalAddress = Boolean.parseBoolean( -+ AccessController.doPrivileged( -+ new PrivilegedExceptionAction<String>() { -+ public String run() { -+ return System.getProperty( -+ "jdk.net.revealLocalAddress"); -+ } -+ })); -+ -+ } catch (Exception e) { -+ // revealLocalAddress is false -+ } -+ propRevealLocalAddress = true; -+ } -+ return revealLocalAddress; -+ } -+ -+ private static InetSocketAddress getLoopbackAddress(int port) { -+ try { -+ return new InetSocketAddress(InetAddress.getByName(null), -+ port); -+ } catch (UnknownHostException e) { -+ throw new InternalError("Shouldn't reach here."); -+ } -+ } -+ - } |