From b2f717e8d96740c7c18198f0befd6a87e2000aab Mon Sep 17 00:00:00 2001
From: gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 5 Oct 2006 09:32:57 +0000
Subject: [PATCH] 2006-10-05  Gary Benson  <gbenson@redhat.com>

	* java/net/SocketPermission.java
	(processHostport): Cope with IPv6 addresses with a
	one-digit first component.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117454 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/classpath/ChangeLog.gcj                  |  6 ++++++
 libjava/classpath/java/net/SocketPermission.java | 10 +++++++---
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj
index 91948d1fe928..56d1cb91144d 100644
--- a/libjava/classpath/ChangeLog.gcj
+++ b/libjava/classpath/ChangeLog.gcj
@@ -1,3 +1,9 @@
+2006-10-05  Gary Benson  <gbenson@redhat.com>
+
+	* java/net/SocketPermission.java
+	(processHostport): Cope with IPv6 addresses with a
+	one-digit first component.
+
 2006-09-25  Tom Tromey  <tromey@redhat.com>
 
 	* native/jni/gconf-peer/Makefile.in: Rebuilt.
diff --git a/libjava/classpath/java/net/SocketPermission.java b/libjava/classpath/java/net/SocketPermission.java
index 2d6343dc570e..64885438aed5 100644
--- a/libjava/classpath/java/net/SocketPermission.java
+++ b/libjava/classpath/java/net/SocketPermission.java
@@ -193,16 +193,19 @@ public final class SocketPermission extends Permission implements Serializable
     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 @@ public final class SocketPermission extends Permission implements Serializable
 
       case 8:
 	// an IPv6 address with ports
+	int last_colon = hostport.lastIndexOf(':');
 	return "[" + hostport.substring(0, last_colon) + "]"
 	  + hostport.substring(last_colon);
 
-- 
GitLab