JDK-8132508 : Bug JDK-8029354 reproduces with underscore in hostname
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.net
  • Affected Version: 8-pool,9
  • Priority: P3
  • Status: Closed
  • Resolution: Not an Issue
  • OS: windows_7
  • CPU: x86_64
  • Submitted: 2015-05-27
  • Updated: 2015-07-30
  • Resolved: 2015-07-30
Related Reports
Relates :  
Relates :  
Description
FULL PRODUCT VERSION :
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
Bug JDK-8029354 reproduces with underscore in hostname. I have to use third paty library access webService by intranet URL with underscore in hostname in thrid level domain. Hostname is also used to validate server, so I cannot use ip addres as workaround.

Caused by: java.lang.IllegalArgumentException: Invalid characters in hostname
                at java.net.HostPortrange.toLowerCase(HostPortrange.java:189)
                at java.net.HostPortrange.<init>(HostPortrange.java:150)
                at java.net.URLPermission$Authority.<init>(URLPermission.java:481)
                at java.net.URLPermission.parseURI(URLPermission.java:449)
                at java.net.URLPermission.init(URLPermission.java:170)
                at java.net.URLPermission.<init>(URLPermission.java:166)
                at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1032)
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1425)
                at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2978)
                at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:489)


REGRESSION.  Last worked in version 7u80

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to access any URL with uderscore in hostname

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
access URL with uderscore in hostname without exception
ACTUAL -
Caused by: java.lang.IllegalArgumentException: Invalid characters in hostname
                at java.net.HostPortrange.toLowerCase(HostPortrange.java:189)
                at java.net.HostPortrange.<init>(HostPortrange.java:150)
                at java.net.URLPermission$Authority.<init>(URLPermission.java:481)
                at java.net.URLPermission.parseURI(URLPermission.java:449)
                at java.net.URLPermission.init(URLPermission.java:170)
                at java.net.URLPermission.<init>(URLPermission.java:166)
                at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1032)
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1425)
                at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2978)
                at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:489)


ERROR MESSAGES/STACK TRACES THAT OCCUR :
Caused by: java.lang.IllegalArgumentException: Invalid characters in hostname
                at java.net.HostPortrange.toLowerCase(HostPortrange.java:189)
                at java.net.HostPortrange.<init>(HostPortrange.java:150)
                at java.net.URLPermission$Authority.<init>(URLPermission.java:481)
                at java.net.URLPermission.parseURI(URLPermission.java:449)
                at java.net.URLPermission.init(URLPermission.java:170)
                at java.net.URLPermission.<init>(URLPermission.java:166)
                at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1032)
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1425)
                at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2978)
                at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:489)


REPRODUCIBILITY :
This bug can be reproduced always.


Comments
RFC 952 disallows _ underscores in hostnames. So, this is not a bug. I also haven't been able to find examples of actual usage. So, unless a particularly compelling case can be made, I'm closing as not a bug.
30-07-2015

Run the attached test case (OpenURL.java) in Windows 7 64-bit. Checked this with JDK 8u40, 8u51, 8u60 ea b24, and 9 ea b73: =============================================== 8u40: FAIL 8u51: FAIL 8u60 ea b25: FAIL 9 ea b73: FAIL Output with JDK 8u51: ================== > java OpenURL Exception in thread "main" java.lang.IllegalArgumentException: Invalid characters in hostname at java.net.HostPortrange.toLowerCase(HostPortrange.java:189) at java.net.HostPortrange.<init>(HostPortrange.java:150) at java.net.URLPermission$Authority.<init>(URLPermission.java:481) at java.net.URLPermission.parseURI(URLPermission.java:449) at java.net.URLPermission.init(URLPermission.java:170) at java.net.URLPermission.<init>(URLPermission.java:166) at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1032) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1425) at OpenURL.main(OpenURL.java:42) Result: The issue is reproducible across JDK versions including JDK 8u51 and 9 ea b73.
29-07-2015