diff --git a/src/share/classes/java/net/HttpCookie.java b/src/share/classes/java/net/HttpCookie.java index 34e60126912c9c1fe55c61657715d620a97b145f..a932a5fef1000330eef5bc0b46063dd96500542d 100644 --- a/src/share/classes/java/net/HttpCookie.java +++ b/src/share/classes/java/net/HttpCookie.java @@ -748,10 +748,14 @@ public final class HttpCookie implements Cloneable { && (embeddedDotInDomain == -1 || embeddedDotInDomain == domain.length() - 1)) return false; - // if the host name contains no dot and the domain name is .local + // if the host name contains no dot and the domain name + // is .local or host.local int firstDotInHost = host.indexOf('.'); - if (firstDotInHost == -1 && isLocalDomain) + if (firstDotInHost == -1 && + (isLocalDomain || + domain.equalsIgnoreCase(host + ".local"))) { return true; + } int domainLength = domain.length(); int lengthDiff = host.length() - domainLength; diff --git a/test/java/net/CookieHandler/TestHttpCookie.java b/test/java/net/CookieHandler/TestHttpCookie.java index 7d167532cd18e000f04f7eecec06a3de84dd63b6..cf93df935e9508b559466cf88edbb760f1928080 100644 --- a/test/java/net/CookieHandler/TestHttpCookie.java +++ b/test/java/net/CookieHandler/TestHttpCookie.java @@ -362,12 +362,13 @@ public class TestHttpCookie { eq(c1, c2, false); header("Test domainMatches()"); - dm(".foo.com", "y.x.foo.com", false); - dm(".foo.com", "x.foo.com", true); - dm(".com", "whatever.com", false); - dm(".com.", "whatever.com", false); - dm(".ajax.com", "ajax.com", true); - dm(".local", "example.local", true); + dm(".foo.com", "y.x.foo.com", false); + dm(".foo.com", "x.foo.com", true); + dm(".com", "whatever.com", false); + dm(".com.", "whatever.com", false); + dm(".ajax.com", "ajax.com", true); + dm(".local", "example.local", true); + dm("example.local", "example", true); // bug 6277808 testCount++;