summaryrefslogtreecommitdiff
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
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).
-rw-r--r--ChangeLog8
-rw-r--r--java/net/SocketPermission.java27
2 files changed, 21 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index e59b439ca..d7e16dd47 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+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).
+
2006-08-31 Mark Wielaard <mark@klomp.org>
* javax/swing/text/ZoneView.java (Zone): Make static class.
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)