summaryrefslogtreecommitdiff
path: root/java/net
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2006-09-22 13:24:32 +0000
committerGary Benson <gbenson@redhat.com>2006-09-22 13:24:32 +0000
commitf930796d752235b4f23957a7c663862df5609d42 (patch)
tree75c00d522793cac934f6ca8fdea70409dca96107 /java/net
parent19c4cc662174fd98d1fb6e2c9ad9acbef4716c9f (diff)
downloadclasspath-f930796d752235b4f23957a7c663862df5609d42.tar.gz
2006-09-22 Gary Benson <gbenson@redhat.com>
* java/net/SocketPermission.java (processHostport): Cope with IPv6 addresses with a one-digit first component.
Diffstat (limited to 'java/net')
-rw-r--r--java/net/SocketPermission.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/java/net/SocketPermission.java b/java/net/SocketPermission.java
index 2d6343dc5..64885438a 100644
--- a/java/net/SocketPermission.java
+++ b/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);