diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 65dcba1afd0cfa00add1b29ec46a26792fd6f3b2..594e2f2e22d63ce3c56db3b6d6e10f6a9edebb38 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2006-09-01 Gary Benson <gbenson@redhat.com> + + * java/net/InetAddress.java (getLocalHost): Refactor to avoid + security check if getLocalHostname() fails and to provide more + meaningful exceptions it the security check fails. + 2006-09-01 Gary Benson <gbenson@redhat.com> * java/net/InetAddress.java (getByAddress): Create Inet4Address diff --git a/libjava/java/net/InetAddress.java b/libjava/java/net/InetAddress.java index 5bb9c0f68674d5406c72cef4d8ec3ef02cf39c65..995e8975657366485f081a0b91c75484b34e7fa9 100644 --- a/libjava/java/net/InetAddress.java +++ b/libjava/java/net/InetAddress.java @@ -706,7 +706,10 @@ public class InetAddress implements Serializable String hostname = getLocalHostname(); - if (s != null) + if (hostname == null || hostname.length() == 0) + throw new UnknownHostException(); + + try { // "The Java Class Libraries" suggests that if the security // manager disallows getting the local host name, then @@ -714,37 +717,22 @@ public class InetAddress implements Serializable // However, the JDK 1.2 API claims to throw SecurityException, // which seems to suggest SecurityException is *not* caught. // In this case, experimentation shows that former is correct. - try + if (s != null) { // This is wrong, if the name returned from getLocalHostname() // is not a fully qualified name. FIXME. s.checkConnect (hostname, -1); } - catch (SecurityException ex) - { - hostname = null; - } + + localhost = new InetAddress (null, null); + lookup (hostname, localhost, false); } - - if (hostname != null && hostname.length() != 0) + catch (Exception ex) { - try - { - localhost = new InetAddress (null, null); - lookup (hostname, localhost, false); - } - catch (Exception ex) - { - UnknownHostException failure = new UnknownHostException(hostname); - failure.initCause(ex); - throw failure; - } + UnknownHostException failure = new UnknownHostException(hostname); + failure.initCause(ex); + throw failure; } - else - throw new UnknownHostException(); - - if (localhost == null) - localhost = new InetAddress (loopbackAddress, "localhost"); } /**