InetAddress.java (getLocalHost): Refactor to avoid security check if getLocalHostname...
authorGary Benson <gbenson@redhat.com>
Fri, 1 Sep 2006 15:38:00 +0000 (15:38 +0000)
committerGary Benson <gary@gcc.gnu.org>
Fri, 1 Sep 2006 15:38:00 +0000 (15:38 +0000)
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.

From-SVN: r116627

libjava/ChangeLog
libjava/java/net/InetAddress.java

index 65dcba1afd0cfa00add1b29ec46a26792fd6f3b2..594e2f2e22d63ce3c56db3b6d6e10f6a9edebb38 100644 (file)
@@ -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
index 5bb9c0f68674d5406c72cef4d8ec3ef02cf39c65..995e8975657366485f081a0b91c75484b34e7fa9 100644 (file)
@@ -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");
   }
 
   /**