2006-09-05 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). From-SVN: r116694
This commit is contained in:
parent
fd89bc3f91
commit
366f16226f
2 changed files with 21 additions and 14 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue