From aa3c881eec519f5d9da7d85a910427b72fb9ad7b Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 20 Apr 2015 11:34:36 +1000 Subject: [PATCH] 464869 PathResource.addPath allows absolute resolution. Added test harness to demonstrate Applied suggested fix - which fixes the test. Need to analyse why this every worked, why it was not detected and what are the ramifications in 9.2.x and 9.3.x releases --- .../jetty/util/resource/PathResource.java | 2 +- .../util/resource/AbstractFSResourceTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java index d7371b2626b..19c2f3c6f1c 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java @@ -107,7 +107,7 @@ public class PathResource extends Resource @Override public Resource addPath(String apath) throws IOException, MalformedURLException { - return new PathResource(this.path.resolve(apath)); + return new PathResource(this.path.getFileSystem().getPath(path.toString(), apath)); } @Override diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AbstractFSResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AbstractFSResourceTest.java index 08849e9bf72..67cafac565f 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AbstractFSResourceTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AbstractFSResourceTest.java @@ -110,6 +110,23 @@ public abstract class AbstractFSResourceTest } } + @Test + public void testAddPath() throws Exception + { + File dir = testdir.getDir(); + File subdir = new File(dir,"sub"); + FS.ensureDirExists(subdir); + + try (Resource base = newResource(testdir.getDir())) + { + Resource sub = base.addPath("sub"); + assertThat("sub/.isDirectory",sub.isDirectory(),is(true)); + + Resource tmp = sub.addPath("/tmp"); + assertThat("No root",tmp.exists(),is(false)); + } + } + @Test public void testIsDirectory() throws Exception {