From: bryce Date: Fri, 13 Aug 2004 22:17:34 +0000 (+0000) Subject: 2004-08-13 Bryce McKinlay X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=9abf00f8ebd5a49fb6b615c96a179a9ad773c074 2004-08-13 Bryce McKinlay * java/net/InetAddress.java (loopbackAddress): Renamed from localhostAddress. (getByName): Return loopback address for null hostname, without security check. Use lookup(), not getAllByName. (getAllByName): Return loopback address for null hostname, without security check. * java/net/natInetAddressPosix.cc (lookup): Don't perform security check here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85967 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8a86bc9000d..71938837faa 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,16 @@ 2004-08-13 Bryce McKinlay + * java/net/InetAddress.java (loopbackAddress): Renamed from + localhostAddress. + (getByName): Return loopback address for null hostname, without + security check. Use lookup(), not getAllByName. + (getAllByName): Return loopback address for null hostname, without + security check. + * java/net/natInetAddressPosix.cc (lookup): Don't perform security + check here. + +2004-08-13 Bryce McKinlay + PR libgcj/17020 Reported by Robin Green. * defineclass.cc (handleField): Don't throw exception on unrecognised diff --git a/libjava/java/net/InetAddress.java b/libjava/java/net/InetAddress.java index 6d57566a1b3..cf1f3a581fb 100644 --- a/libjava/java/net/InetAddress.java +++ b/libjava/java/net/InetAddress.java @@ -68,7 +68,10 @@ public class InetAddress implements Serializable */ static InetAddress ANY_IF; - private static final byte[] localhostAddress = { 127, 0, 0, 1 }; + private static final byte[] loopbackAddress = { 127, 0, 0, 1 }; + + private static final InetAddress loopback + = new InetAddress (loopbackAddress, "localhost"); private static InetAddress localhost = null; @@ -564,7 +567,8 @@ public class InetAddress implements Serializable * default. This method is equivalent to returning the first element in * the InetAddress array returned from GetAllByName. * - * @param hostname The name of the desired host, or null for the local machine. + * @param hostname The name of the desired host, or null for the local + * loopback address. * * @return The address of the host as an InetAddress object. * @@ -576,14 +580,15 @@ public class InetAddress implements Serializable public static InetAddress getByName(String hostname) throws UnknownHostException { + // If null or the empty string is supplied, the loopback address + // is returned. Note that this is permitted without a security check. + if (hostname == null || hostname.length() == 0) + return loopback; + SecurityManager s = System.getSecurityManager(); if (s != null) s.checkConnect(hostname, -1); - // Default to current host if necessary - if (hostname == null || hostname.length() == 0) - return getLocalHost(); - // Assume that the host string is an IP address byte[] address = aton(hostname); if (address != null) @@ -608,8 +613,9 @@ public class InetAddress implements Serializable } // Try to resolve the host by DNS - InetAddress[] addresses = getAllByName(hostname); - return addresses[0]; + InetAddress result = new InetAddress(null, null); + lookup (hostname, result, false); + return result; } /** @@ -620,7 +626,7 @@ public class InetAddress implements Serializable * hostname of the local machine is supplied by default. * * @param hostname The name of the desired host, or null for the - * local machine. + * local loopback address. * * @return All addresses of the host as an array of InetAddress objects. * @@ -632,6 +638,11 @@ public class InetAddress implements Serializable public static InetAddress[] getAllByName(String hostname) throws UnknownHostException { + // If null or the empty string is supplied, the loopback address + // is returned. Note that this is permitted without a security check. + if (hostname == null || hostname.length() == 0) + return new InetAddress[] {loopback}; + SecurityManager s = System.getSecurityManager(); if (s != null) s.checkConnect(hostname, -1); @@ -676,7 +687,7 @@ public class InetAddress implements Serializable // However, if there is a security manager, and the cached result // is other than "localhost", we need to check again. if (localhost == null - || (s != null && localhost.addr != localhostAddress)) + || (s != null && ! localhost.isLoopbackAddress())) getLocalHost (s); return localhost; @@ -724,7 +735,7 @@ public class InetAddress implements Serializable } if (localhost == null) - localhost = new InetAddress (localhostAddress, "localhost"); + localhost = new InetAddress (loopbackAddress, "localhost"); } /** diff --git a/libjava/java/net/natInetAddressPosix.cc b/libjava/java/net/natInetAddressPosix.cc index b97502e19b0..9edfae29010 100644 --- a/libjava/java/net/natInetAddressPosix.cc +++ b/libjava/java/net/natInetAddressPosix.cc @@ -229,13 +229,6 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, { if (!all) host = JvNewStringUTF (hptr->h_name); - java::lang::SecurityException *ex = checkConnect (host); - if (ex != NULL) - { - if (iaddr == NULL || iaddr->addr == NULL) - throw ex; - hptr = NULL; - } } if (hptr == NULL) {