diff options
author | Gary Benson <gbenson@redhat.com> | 2006-08-31 12:26:21 +0000 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2006-08-31 12:26:21 +0000 |
commit | ad459d02c087cab626d2b3b6f7da362c4b17ac8b (patch) | |
tree | 2df76c726ce0907f22fad8ff129b5b4b8e38bab9 /java/net | |
parent | 244bd9209483493d32a93574b98e13f272de556c (diff) | |
download | classpath-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.java | 27 |
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) |