From d7945fafe30409970df153ece1ad881776a49747 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Fri, 13 Aug 2004 22:17:34 +0000 Subject: [PATCH] InetAddress.java (loopbackAddress): Renamed from localhostAddress. 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. From-SVN: r85967 --- libjava/ChangeLog | 11 +++++++++ libjava/java/net/InetAddress.java | 33 ++++++++++++++++--------- libjava/java/net/natInetAddressPosix.cc | 7 ------ 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8a86bc9000d..71938837faa 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +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 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) { -- 2.30.2