Socks5LogicHandler.encodeProxyRequestPacket(final SocksProxyRequest request)
should check that the result of request.getEndpointAddress() is resolved before
using it
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DIRMINA-652
URL: https://issues.apache.org/jira/browse/DIRMINA-652
Project: MINA
Issue Type: Bug
Affects Versions: 2.0.0-RC1
Reporter: Dan Mihai Dumitriu
Depending on what is going on in layers above this one, the InetSocketAddress
returned by request.getEndpointAddress() could be unresolved, in which case the
hostname should be used.
private IoBuffer encodeProxyRequestPacket(final SocksProxyRequest request)
throws UnsupportedEncodingException {
int len = 6;
byte[] host = request.getHost() != null ? request.getHost().getBytes(
"ASCII") : null;
InetSocketAddress adr = request.getEndpointAddress();
byte addressType = 0;
if (adr != null && !adr.isUnresolved()) {
if (adr.getAddress() instanceof Inet6Address) {
len += 16;
addressType = SocksProxyConstants.IPV6_ADDRESS_TYPE;
} else if (adr.getAddress() instanceof Inet4Address) {
len += 4;
addressType = SocksProxyConstants.IPV4_ADDRESS_TYPE;
}
} else {
len += 1 + host.length;
addressType = SocksProxyConstants.DOMAIN_NAME_ADDRESS_TYPE;
}
IoBuffer buf = IoBuffer.allocate(len);
buf.put(request.getProtocolVersion());
buf.put(request.getCommandCode());
buf.put((byte) 0x00); // Reserved
buf.put(addressType);
if (addressType == SocksProxyConstants.DOMAIN_NAME_ADDRESS_TYPE) {
buf.put((byte) host.length);
buf.put(host);
} else {
buf.put(request.getIpAddress());
}
buf.put(request.getPort());
return buf;
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.