diff --git a/modules/dcache-xrootd/src/main/java/org/dcache/xrootd/door/XrootdRedirectHandler.java b/modules/dcache-xrootd/src/main/java/org/dcache/xrootd/door/XrootdRedirectHandler.java index 3c1301cd84d..ae010e61762 100644 --- a/modules/dcache-xrootd/src/main/java/org/dcache/xrootd/door/XrootdRedirectHandler.java +++ b/modules/dcache-xrootd/src/main/java/org/dcache/xrootd/door/XrootdRedirectHandler.java @@ -1379,10 +1379,17 @@ private FsPath createFullPath(String path, Map opaque) throws PermissionDeniedCacheException { String fromOpaque = opaque.get(EFFECTIVE_ROOT_NAME); FsPath root = fromOpaque != null ? FsPath.create(fromOpaque) : effectiveRoot(); + + if (path.charAt(0) != '/') { + path = "/" + path; + } + FsPath fullPath = FsPath.create(path); + if (fullPath.hasPrefix(root)) { path = fullPath.stripPrefix(root); } + return root.chroot(path); }