2006-09-05 Gary Benson <gbenson@redhat.com>
authorGary Benson <gbenson@redhat.com>
Tue, 5 Sep 2006 07:49:08 +0000 (07:49 +0000)
committerGary Benson <gary@gcc.gnu.org>
Tue, 5 Sep 2006 07:49:08 +0000 (07:49 +0000)
* java/net/SocketPermission.java
(maybeBracketIPv6Address): Renamed to processHostport.
(processHostport): Also translate "" to "localhost".
(setHostPort): Remove special cases for empty hostport and for
extra colons in hostport (processHostport handles these now).

From-SVN: r116694

libjava/classpath/ChangeLog.gcj
libjava/classpath/java/net/SocketPermission.java

index ee73bdb8ef753b66b867831515b46a45446b1f21..18a890a928e0d31132ba9edbf34255be21e0ac68 100644 (file)
@@ -1,3 +1,11 @@
+2006-09-05  Gary Benson  <gbenson@redhat.com>
+
+       * java/net/SocketPermission.java
+       (maybeBracketIPv6Address): Renamed to processHostport.
+       (processHostport): Also translate "" to "localhost".
+       (setHostPort): Remove special cases for empty hostport and for
+       extra colons in hostport (processHostport handles these now).
+       
 2006-08-31  Keith Seitz  <keiths@redhat.com>
 
        * include/jvmti.h: Update from Classpath to get latest fixes and
index a722fcad4e5f65666bc316b94dcf892aeea83e8d..97e93dcbb3520cd1d7169adc305e398a7c56f956 100644 (file)
@@ -164,21 +164,26 @@ public final class SocketPermission extends Permission implements Serializable
    */
   public SocketPermission(String hostport, String actions)
   {
-    super(maybeBracketIPv6Address(hostport));
+    super(processHostport(hostport));
 
     setHostPort(getName());
     setActions(actions);
   }
 
   /**
-   * IPv6 addresses in the hostport must either be enclosed by
-   * "[" and "]" or be specified in the full uncompressed form.
-   * In the latter case proprietary JVMs will quote the address
-   * with "[" and "]", so we do to.
+   * There are two cases in which hostport needs rewriting before
+   * being passed to the superclass constructor.  If hostport is an
+   * empty string then it is substituted with "localhost".  And if
+   * the host part of hostport is a literal IPv6 address in the full
+   * uncompressed form not enclosed with "[" and "]" then we enclose
+   * it with them.
    */
-  private static String maybeBracketIPv6Address(String hostport)
+  private static String processHostport(String hostport)
   {
-    if (hostport.length() == 0 || hostport.charAt(0) == '[')
+    if (hostport.length() == 0)
+      return "localhost";
+
+    if (hostport.charAt(0) == '[')
       return hostport;
 
     int colons = 0, last_colon = 0;
@@ -221,11 +226,7 @@ public final class SocketPermission extends Permission implements Serializable
   {
     // Split into host and ports
     String ports;
-    if (hostport.length() == 0)
-      {
-       host = ports = "";
-      }
-    else if (hostport.charAt(0) == '[')
+    if (hostport.charAt(0) == '[')
       {
        // host is a bracketed IPv6 address
        int end = hostport.indexOf("]");
@@ -255,8 +256,6 @@ public final class SocketPermission extends Permission implements Serializable
            ports = hostport.substring(sep + 1);
          }
       }
-    if (ports.indexOf(":") != -1)
-      throw new IllegalArgumentException("Unexpected ':'");
 
     // Parse and validate the ports
     if (ports.length() == 0)