Commit 6cae9257 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.5.x'

parents 07b7d1cb a491727b
...@@ -48,6 +48,10 @@ public class Handler extends URLStreamHandler { ...@@ -48,6 +48,10 @@ public class Handler extends URLStreamHandler {
private static final String SEPARATOR = "!/"; private static final String SEPARATOR = "!/";
private static final String CURRENT_DIR = "/./";
private static final String PARENT_DIR = "/../";
private static final String[] FALLBACK_HANDLERS = { private static final String[] FALLBACK_HANDLERS = {
"sun.net.www.protocol.jar.Handler" }; "sun.net.www.protocol.jar.Handler" };
...@@ -207,6 +211,9 @@ public class Handler extends URLStreamHandler { ...@@ -207,6 +211,9 @@ public class Handler extends URLStreamHandler {
} }
private String normalize(String file) { private String normalize(String file) {
if (!file.contains(CURRENT_DIR) && !file.contains(PARENT_DIR)) {
return file;
}
int afterLastSeparatorIndex = file.lastIndexOf(SEPARATOR) + SEPARATOR.length(); int afterLastSeparatorIndex = file.lastIndexOf(SEPARATOR) + SEPARATOR.length();
String afterSeparator = file.substring(afterLastSeparatorIndex); String afterSeparator = file.substring(afterLastSeparatorIndex);
afterSeparator = replaceParentDir(afterSeparator); afterSeparator = replaceParentDir(afterSeparator);
...@@ -216,7 +223,7 @@ public class Handler extends URLStreamHandler { ...@@ -216,7 +223,7 @@ public class Handler extends URLStreamHandler {
private String replaceParentDir(String file) { private String replaceParentDir(String file) {
int parentDirIndex; int parentDirIndex;
while ((parentDirIndex = file.indexOf("/../")) >= 0) { while ((parentDirIndex = file.indexOf(PARENT_DIR)) >= 0) {
int precedingSlashIndex = file.lastIndexOf('/', parentDirIndex - 1); int precedingSlashIndex = file.lastIndexOf('/', parentDirIndex - 1);
if (precedingSlashIndex >= 0) { if (precedingSlashIndex >= 0) {
file = file.substring(0, precedingSlashIndex) file = file.substring(0, precedingSlashIndex)
...@@ -230,7 +237,7 @@ public class Handler extends URLStreamHandler { ...@@ -230,7 +237,7 @@ public class Handler extends URLStreamHandler {
} }
private String replaceCurrentDir(String file) { private String replaceCurrentDir(String file) {
return file.replace("/./", "/"); return file.replace(CURRENT_DIR, "/");
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment