diff options
author | Bryce McKinlay <mckinlay@redhat.com> | 2004-08-13 22:17:34 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2004-08-13 23:17:34 +0100 |
commit | d7945fafe30409970df153ece1ad881776a49747 (patch) | |
tree | 71045c3b297bbcfcc11626a043b6935f90d3b53f /libjava/java | |
parent | 1ef02b9de5bc2b05d07e2fa15d5f62b7fa6ddfdd (diff) | |
download | gcc-d7945fafe30409970df153ece1ad881776a49747.zip gcc-d7945fafe30409970df153ece1ad881776a49747.tar.gz gcc-d7945fafe30409970df153ece1ad881776a49747.tar.bz2 |
InetAddress.java (loopbackAddress): Renamed from localhostAddress.
2004-08-13 Bryce McKinlay <mckinlay@redhat.com>
* 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
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/net/InetAddress.java | 33 | ||||
-rw-r--r-- | libjava/java/net/natInetAddressPosix.cc | 7 |
2 files changed, 22 insertions, 18 deletions
diff --git a/libjava/java/net/InetAddress.java b/libjava/java/net/InetAddress.java index 6d57566..cf1f3a5 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 b97502e..9edfae2 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) { |