URI ignores invalid ipv6 address while parsing authority

Jing LV lvjing at linux.vnet.ibm.com
Mon Mar 7 03:36:28 PST 2011


ÓÚ 2011-3-1 20:44, Chris Hegarty дµÀ:
> On 03/ 1/11 09:58 AM, Jing LV wrote:
>> Hello,
>>
>> According to authority component RFC2396, if host name is a domain name
>> there should be no "[" and "]". However if we put a hostname like
>> "[www.abc.com]" while creating a URI, it silently accept, no error is
>> reported. I suppose this is a bug. A testcase can be found below:
>>
>>          try {
>>              uri = new URI("ftp", "[www.abc.com]", "/dir1/dir2", "query", "frag");
>>          } catch (URISyntaxException e) {
>>              // Expected
>>              System.out.printf("Should reach here");
>>          }
>>
>> And if we print uri.getAuthority() we'll get a null value.
>> I think the problem is caused by ipv6 address, which is enclosed with
>> "[]", but a normal hostname does not.
> This does appear to be strange.  appendAuthority will ignore  any
> authority  in square brackets that does not contain a ':' . The internal
> string representation of the uri will then parse without failure,
> because parseHierarchical allows  empty authority component as long as
> it's followed by a non-empty path, query component, or fragment component.
>
> I filed CR 7023363: "URI("ftp", "[www.abc.com]", "/dir1/dir2", "query",
> "frag") should throw URISyntaxException", for this.
>
> appendAuthority should probably treat [www.abc.com] as a regular
> authority and this would them be caught in parseHierarchical and
> URISyntaxException thrown.
>

Thanks Chris. I see the bug 7023363 online. I wonder is there a fix now?
I find that we may add an else block at the end of the
URI.appendAuthority() to throw the right exception:

                     sb.append(quote(doquote,
                             L_REG_NAME | L_SERVER,
                             H_REG_NAME | H_SERVER));
+                } else {
+                    // there is no valid address in "[]"
+                    throw new URISyntaxException(authority,
+                            "Malformed IPv6 address.");
                 }
             } else {
                 sb.append(quote(authority,


Any ideas?

> -Chris.
>
>> Any comments?
>>


-- 
Best Regards,
Jimmy, Jing LV





More information about the net-dev mailing list