From b55535e3e7cdf1f96b876e28a360f3f5576b0843 Mon Sep 17 00:00:00 2001
From: gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 1 Sep 2006 15:38:00 +0000
Subject: [PATCH] 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.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116627 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog                 |  6 ++++++
 libjava/java/net/InetAddress.java | 36 +++++++++++--------------------
 2 files changed, 18 insertions(+), 24 deletions(-)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 65dcba1afd0c..594e2f2e22d6 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 5bb9c0f68674..995e89756573 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");
   }
 
   /**
-- 
GitLab