summaryrefslogtreecommitdiff
path: root/java/net
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2006-08-31 12:26:21 +0000
committerGary Benson <gbenson@redhat.com>2006-08-31 12:26:21 +0000
commitad459d02c087cab626d2b3b6f7da362c4b17ac8b (patch)
tree2df76c726ce0907f22fad8ff129b5b4b8e38bab9 /java/net
parent244bd9209483493d32a93574b98e13f272de556c (diff)
downloadclasspath-ad459d02c087cab626d2b3b6f7da362c4b17ac8b.tar.gz
2006-08-31 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).
Diffstat (limited to 'java/net')
-rw-r--r--java/net/SocketPermission.java27
1 files changed, 13 insertions, 14 deletions
diff --git a/java/net/SocketPermission.java b/java/net/SocketPermission.java
index a722fcad4..97e93dcbb 100644
--- a/java/net/SocketPermission.java
+++ b/java/net/SocketPermission.java
@@ -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)