提交 8090ea9f 编写于 作者: C chegar

8019834: InetAddress.getByName hangs for bad IPv6 literals

Reviewed-by: alanb
上级 652068bd
...@@ -1135,7 +1135,7 @@ class InetAddress implements java.io.Serializable { ...@@ -1135,7 +1135,7 @@ class InetAddress implements java.io.Serializable {
// see if it is IPv4 address // see if it is IPv4 address
addr = IPAddressUtil.textToNumericFormatV4(host); addr = IPAddressUtil.textToNumericFormatV4(host);
if (addr == null) { if (addr == null) {
// see if it is IPv6 address // This is supposed to be an IPv6 literal
// Check if a numeric or string zone id is present // Check if a numeric or string zone id is present
int pos; int pos;
if ((pos=host.indexOf ("%")) != -1) { if ((pos=host.indexOf ("%")) != -1) {
...@@ -1144,7 +1144,9 @@ class InetAddress implements java.io.Serializable { ...@@ -1144,7 +1144,9 @@ class InetAddress implements java.io.Serializable {
ifname = host.substring (pos+1); ifname = host.substring (pos+1);
} }
} }
addr = IPAddressUtil.textToNumericFormatV6(host); if ((addr = IPAddressUtil.textToNumericFormatV6(host)) == null) {
throw new UnknownHostException(host + ": invalid IPv6 address");
}
} else if (ipv6Expected) { } else if (ipv6Expected) {
// Means an IPv4 litteral between brackets! // Means an IPv4 litteral between brackets!
throw new UnknownHostException("["+host+"]"); throw new UnknownHostException("["+host+"]");
...@@ -1162,10 +1164,10 @@ class InetAddress implements java.io.Serializable { ...@@ -1162,10 +1164,10 @@ class InetAddress implements java.io.Serializable {
} }
return ret; return ret;
} }
} else if (ipv6Expected) { } else if (ipv6Expected) {
// We were expecting an IPv6 Litteral, but got something else // We were expecting an IPv6 Litteral, but got something else
throw new UnknownHostException("["+host+"]"); throw new UnknownHostException("["+host+"]");
} }
return getAllByName0(host, reqAddr, true); return getAllByName0(host, reqAddr, true);
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
/* /*
* @test * @test
* @bug 4742177 * @bug 4742177 8019834
* @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code * @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code
*/ */
import java.net.*; import java.net.*;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册