# HG changeset patch # User michaelm # Date 1479401958 0 # Node ID f3d46da34ae957b5bfa6bcb89f68c25d3a695912 # Parent 3dd7af9b9e05e13b5178b4b690a811efb3439126 8167223: URL handling improvements Reviewed-by: prappo, chegar diff -r 3dd7af9b9e05 -r f3d46da34ae9 jdk/src/java.base/share/classes/java/net/URLStreamHandler.java --- a/jdk/src/java.base/share/classes/java/net/URLStreamHandler.java Thu Nov 17 02:08:53 2016 +0000 +++ b/jdk/src/java.base/share/classes/java/net/URLStreamHandler.java Thu Nov 17 16:59:18 2016 +0000 @@ -161,9 +161,9 @@ (spec.charAt(start + 1) == '/')) { start += 2; i = spec.indexOf('/', start); - if (i < 0) { + if (i < 0 || i > limit) { i = spec.indexOf('?', start); - if (i < 0) + if (i < 0 || i > limit) i = limit; } @@ -171,8 +171,14 @@ int ind = authority.indexOf('@'); if (ind != -1) { - userInfo = authority.substring(0, ind); - host = authority.substring(ind+1); + if (ind != authority.lastIndexOf('@')) { + // more than one '@' in authority. This is not server based + userInfo = null; + host = null; + } else { + userInfo = authority.substring(0, ind); + host = authority.substring(ind+1); + } } else { userInfo = null; }