Hi all,

This commit fixes a bug whereby IPv6 addresses with a one-digit first
component would caught as errors by SocketPermission's constructor.

Cheers,
Gary
Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.8594
diff -u -r1.8594 ChangeLog
--- ChangeLog   22 Sep 2006 12:27:10 -0000      1.8594
+++ ChangeLog   22 Sep 2006 13:23:56 -0000
@@ -1,3 +1,9 @@
+2006-09-22  Gary Benson  <[EMAIL PROTECTED]>
+
+       * java/net/SocketPermission.java
+       (processHostport): Cope with IPv6 addresses with a
+       one-digit first component.
+
 2006-09-22  Roman Kennke  <[EMAIL PROTECTED]>
 
        * java/awt/Component.java
Index: java/net/SocketPermission.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/net/SocketPermission.java,v
retrieving revision 1.23
diff -u -r1.23 SocketPermission.java
--- java/net/SocketPermission.java      14 Sep 2006 13:43:40 -0000      1.23
+++ java/net/SocketPermission.java      22 Sep 2006 13:23:56 -0000
@@ -193,16 +193,19 @@
     if (hostport.charAt(0) == '[')
       return hostport;
 
-    int colons = 0, last_colon = 0;
+    int colons = 0;
+    boolean colon_allowed = true;
     for (int i = 0; i < hostport.length(); i++)
       {
        if (hostport.charAt(i) == ':')
          {
-           if (i - last_colon == 1)
+           if (!colon_allowed)
              throw new IllegalArgumentException("Ambiguous hostport part");
            colons++;
-           last_colon = i;
+           colon_allowed = false;
          }
+       else
+         colon_allowed = true;
       }
 
     switch (colons)
@@ -218,6 +221,7 @@
 
       case 8:
        // an IPv6 address with ports
+       int last_colon = hostport.lastIndexOf(':');
        return "[" + hostport.substring(0, last_colon) + "]"
          + hostport.substring(last_colon);
 

Reply via email to