8087190: Regression in sun.net.util.IPAddressUtil.isIPv4LiteralAddress(String)
Reviewed-by: chegar
--- a/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java Mon Aug 24 19:10:51 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java Tue Aug 25 14:07:08 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
long tmpValue = 0;
int currByte = 0;
+ boolean newOctet = true;
int len = src.length();
if (len == 0 || len > 15) {
@@ -77,11 +78,12 @@
for (int i = 0; i < len; i++) {
char c = src.charAt(i);
if (c == '.') {
- if (tmpValue < 0 || tmpValue > 0xff || currByte == 3) {
+ if (newOctet || tmpValue < 0 || tmpValue > 0xff || currByte == 3) {
return null;
}
res[currByte++] = (byte) (tmpValue & 0xff);
tmpValue = 0;
+ newOctet = true;
} else {
int digit = Character.digit(c, 10);
if (digit < 0) {
@@ -89,9 +91,10 @@
}
tmpValue *= 10;
tmpValue += digit;
+ newOctet = false;
}
}
- if (tmpValue < 0 || tmpValue >= (1L << ((4 - currByte) * 8))) {
+ if (newOctet || tmpValue < 0 || tmpValue >= (1L << ((4 - currByte) * 8))) {
return null;
}
switch (currByte) {
--- a/jdk/test/java/net/Inet4Address/textToNumericFormat.java Mon Aug 24 19:10:51 2015 -0700
+++ b/jdk/test/java/net/Inet4Address/textToNumericFormat.java Tue Aug 25 14:07:08 2015 +0100
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4749938
+ * @bug 4749938 8087190
* @summary Bug in the parsing IPv4 literal addresses
* @modules java.base/sun.net.spi.nameservice
* @compile -XDignore.symbol.file=true DummyNameService.java DummyNameServiceDescriptor.java
@@ -63,7 +63,11 @@
"2380.255.255.255",
"239.255.65536",
"239.16777216",
- "4294967296" };
+ "4294967296",
+ ".1.1.1",
+ "1..1.1",
+ "1.1.1.",
+ "..." };
for (int i=0; i<goodAddrs.length; i++) {
try {
--- a/jdk/test/sun/net/util/IPAddressUtilTest.java Mon Aug 24 19:10:51 2015 -0700
+++ b/jdk/test/sun/net/util/IPAddressUtilTest.java Tue Aug 25 14:07:08 2015 +0100
@@ -21,6 +21,12 @@
* questions.
*/
+/*
+ * @test
+ * @bug 8087190
+ * @summary Exercise the sun.net.util.IPAddressUtil class
+ */
+
import sun.net.util.*;
/*
@@ -39,6 +45,10 @@
{"238.255.2550.255", bad},
{"238.2550.255.255", bad},
{"2380.255.255.255", bad},
+ {".1.1.1", bad},
+ {"1..1.1", bad},
+ {"1.1.1.", bad},
+ {"...", bad},
{"10::10", good},
{"10::10.1", bad},
{"10::10.1.2", bad},