8019834: InetAddress.getByName hangs for bad IPv6 literals
Reviewed-by: alanb
This commit is contained in:
parent
92076375e9
commit
44a19639b3
@ -1135,7 +1135,7 @@ class InetAddress implements java.io.Serializable {
|
||||
// see if it is IPv4 address
|
||||
addr = IPAddressUtil.textToNumericFormatV4(host);
|
||||
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
|
||||
int pos;
|
||||
if ((pos=host.indexOf ("%")) != -1) {
|
||||
@ -1144,7 +1144,9 @@ class InetAddress implements java.io.Serializable {
|
||||
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) {
|
||||
// Means an IPv4 litteral between brackets!
|
||||
throw new UnknownHostException("["+host+"]");
|
||||
@ -1162,10 +1164,10 @@ class InetAddress implements java.io.Serializable {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
} else if (ipv6Expected) {
|
||||
// We were expecting an IPv6 Litteral, but got something else
|
||||
throw new UnknownHostException("["+host+"]");
|
||||
}
|
||||
} else if (ipv6Expected) {
|
||||
// We were expecting an IPv6 Litteral, but got something else
|
||||
throw new UnknownHostException("["+host+"]");
|
||||
}
|
||||
return getAllByName0(host, reqAddr, true);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4742177
|
||||
* @bug 4742177 8019834
|
||||
* @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code
|
||||
*/
|
||||
import java.net.*;
|
||||
|
Loading…
Reference in New Issue
Block a user