OSDN Git Service

2006-09-01 Gary Benson <gbenson@redhat.com>
authorgary <gary@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Sep 2006 15:38:00 +0000 (15:38 +0000)
committergary <gary@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Sep 2006 15:38:00 +0000 (15:38 +0000)
* java/net/InetAddress.java (getLocalHost): Refactor to avoid
security check if getLocalHostname() fails and to provide more
meaningful exceptions it the security check fails.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116627 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 65dcba1..594e2f2 100644 (file)
@@ -1,5 +1,11 @@
 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
        objects when passed IPv4-mapped IPv6 addresses.
        (getByName, getAllByName): Defer to the above to ensure that the
index 5bb9c0f..995e897 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");
   }
 
   /**