diff --git a/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java b/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java index 5af3d445e0914198ae8c244cf5d2da0a84d1defc..80759530ff15b2f65900dac4ea8b16791a2641f5 100644 --- a/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java +++ b/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java @@ -85,6 +85,15 @@ public class ResolverConfigurationImpl if (val.charAt(0) == '#' || val.charAt(0) == ';') { break; } + if ("nameserver".equals(keyword)) { + if (val.indexOf(':') >= 0 && + val.indexOf('.') < 0 && // skip for IPv4 literals with port + val.indexOf('[') < 0 && + val.indexOf(']') < 0 ) { + // IPv6 literal, in non-BSD-style. + val = "[" + val + "]"; + } + } ll.add(val); if (--maxvalues == 0) { break; diff --git a/test/com/sun/jndi/dns/IPv6NameserverPlatformParsingTest.java b/test/com/sun/jndi/dns/IPv6NameserverPlatformParsingTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ad1dd86497251acfb3ce944a1d79421d8414bad4 --- /dev/null +++ b/test/com/sun/jndi/dns/IPv6NameserverPlatformParsingTest.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2015, Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.lang.reflect.Field; +import java.util.Hashtable; + +import javax.naming.Context; +import javax.naming.NamingException; +import javax.naming.spi.NamingManager; + +import com.sun.jndi.dns.DnsContext; + +/** + * @test + * @bug 6991580 + * @summary IPv6 Nameservers in resolv.conf throws NumberFormatException + * @run main/manual IPv6NameserverPlatformParsingTest + * + * In order to run this test be sure to place, for example, the following + * snippet into your platform's {@code /etc/resolv.conf}: + *
+ * nameserver 127.0.0.1 + * nameserver 2001:4860:4860::8888 + * nameserver [::1]:5353 + * nameserver 127.0.0.1:5353 + *+ * + * Then, run this test as manual jtreg test. + * + * @author Severin Gehwolf + * + */ +public class IPv6NameserverPlatformParsingTest { + + private static boolean foundIPv6 = false; + + public static void main(String[] args) { + Hashtable