Merge pull request #11433 from jetty/fix/jetty-12.0.x/11278-symlink-dir-listing
Issue #11278 - fix 500 response when trying to display symlinked directory
This commit is contained in:
commit
4f1401438a
|
@ -310,7 +310,7 @@ public class PathResource extends Resource
|
|||
@Override
|
||||
public boolean isDirectory()
|
||||
{
|
||||
return Files.isDirectory(getPath(), LinkOption.NOFOLLOW_LINKS);
|
||||
return Files.isDirectory(getPath());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -405,7 +405,16 @@ public abstract class Resource implements Iterable<Resource>
|
|||
boolean noDepth = true;
|
||||
|
||||
for (Iterator<Resource> i = children.iterator(); noDepth && i.hasNext(); )
|
||||
noDepth = !i.next().isDirectory();
|
||||
{
|
||||
Resource resource = i.next();
|
||||
if (resource.isDirectory())
|
||||
{
|
||||
// If the directory is a symlink we do not want to go any deeper.
|
||||
Path resourcePath = resource.getPath();
|
||||
if (resourcePath == null || !Files.isSymbolicLink(resourcePath))
|
||||
noDepth = false;
|
||||
}
|
||||
}
|
||||
if (noDepth)
|
||||
return children;
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ import java.nio.file.InvalidPathException;
|
|||
import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jetty.toolchain.test.FS;
|
||||
|
@ -728,11 +727,6 @@ public class PathResourceTest
|
|||
resource.resolve("foo.txt")
|
||||
};
|
||||
|
||||
List<String> actual = allResources.stream()
|
||||
.map(Resource::getURI)
|
||||
.map(URI::toASCIIString)
|
||||
.toList();
|
||||
|
||||
assertThat(allResources, containsInAnyOrder(expected));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -253,7 +253,11 @@ public class AliasCheckerSymlinkTest
|
|||
Arguments.of(null, "/symlinkParentDir/webroot/file", HttpStatus.NOT_FOUND_404, null),
|
||||
Arguments.of(null, "/symlinkParentDir/webroot/WEB-INF/web.xml", HttpStatus.NOT_FOUND_404, null),
|
||||
Arguments.of(null, "/symlinkSiblingDir/file", HttpStatus.NOT_FOUND_404, null),
|
||||
Arguments.of(null, "/webInfSymlink/web.xml", HttpStatus.NOT_FOUND_404, null)
|
||||
Arguments.of(null, "/webInfSymlink/web.xml", HttpStatus.NOT_FOUND_404, null),
|
||||
|
||||
// We should only be able to list contents of a symlinked directory if the alias checker is installed.
|
||||
Arguments.of(null, "/symlinkDir", HttpStatus.NOT_FOUND_404, null),
|
||||
Arguments.of(allowedResource, "/symlinkDir", HttpStatus.OK_200, null)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue