jdk/src/java.base/share/classes/java/net/URLStreamHandler.java
changeset 43215 f3d46da34ae9
parent 32649 2ee9017c7597
child 47004 b7e72fc752c9
--- 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;
             }