Thanks Elijah, will do and will send an update along. On Mon, Apr 11, 2016 at 9:50 AM, elijah baley <e_ba...@outlook.com> wrote:
> Will have to investigate (this will take time). Since you say you have > unit tests the reproduce the problem, you can debug the code and see > exactly why it happens. I recommend you do it with the source code for 1.2 > which is the latest one. Once you find the problem, please re-open SSHD-601 > and attache the patch... > > > Date: Mon, 11 Apr 2016 09:20:15 -0700 > > Subject: Re: VirtualFileSystem able to mkdir and chdir to non rooted > directory > > From: a...@linkedin.com.INVALID > > To: dev@mina.apache.org > > > > Thanks Elijah, I should have stated that I'm using version 1.1.0 on El > > Capitan v 10.11.3: > > > > $ md5 sshd-core-1.1.0.jar > > MD5 (sshd-core-1.1.0.jar) = 6e94f5cd80de88ddaaa80bb2ff3fa793 > > > > I've written some unit tests (that's how I discovered the issue) on our > end > > here to check to see that an InvalidPathException is thrown using the > code > > above (it can be cleaned up, but is mostly the same). > > > > Maybe my version is out of date or there is still an issue? > > > > On Sat, Apr 9, 2016 at 12:45 AM, elijah baley <e_ba...@outlook.com> > wrote: > > > > > This has been fixed in version 1.1 and up via SSHD-605 > > > > > > > Date: Fri, 8 Apr 2016 15:48:10 -0700 > > > > Subject: VirtualFileSystem able to mkdir and chdir to non rooted > > > directory > > > > From: a...@linkedin.com.INVALID > > > > To: dev@mina.apache.org > > > > > > > > Hi SSHD team, > > > > > > > > Not sure if this is a bug or not, but when I instantiate a new > FileSystem > > > > using the VirtualFileSystemFactory and RootedFileSystemProvider, as a > > > user > > > > on the box, I am able to mkdir and get/put files in parent (i.e. > > > > non-subpath) paths of the supposed "root" if I do something like > > > > > > > > sftp> pwd > > > > Remote working directory: / > > > > > > > > $ put ../thisismyfile > > > > > > > > It seems like the resolveLocalPath which is supposed to throw an > > > > InvalidPathException if the path is not a proper subpath of the > rooted > > > file > > > > system needs to normalize the path in addition to doing it's nullity > > > > checks. I was able to prevent this behavior by doing something like > > > this, > > > > but not sure if this is the best approach. > > > > > > > > Any guidance/explanation would be appreciated. Thanks. > > > > > > > > public class FixedRootedFileSystemProvider extends > > > RootedFileSystemProvider { > > > > > > > > private static final Logger LOG = > > > > LoggerFactory.getLogger(FixedRootedFileSystemProvider.class); > > > > > > > > public FixedRootedFileSystemProvider() { super(); } > > > > > > > > @Override > > > > protected Path resolveLocalPath(RootedPath path) { > > > > Path resolvedLocalPath = super.resolveLocalPath(path); > > > > return validateParent(path, resolvedLocalPath); > > > > } > > > > > > > > private Path validateParent(RootedPath path, Path localPath) throws > > > > InvalidPathException { > > > > RootedFileSystem rfs = path.getFileSystem(); > > > > Path root = rfs.getRoot(); > > > > > > > > if > > > > (!localPath.toAbsolutePath().normalize().startsWith(root.toAbsolutePath().normalize())) > > > > { //i.e. is not a REAL subpath > > > > LOG.info("{} is not a subpath of the root FS path " + > > > > root.toAbsolutePath().normalize(), > > > > localPath.toAbsolutePath().normalize()); > > > > throw new InvalidPathException(localPath.toString(), "Invalid > > > path"); > > > > } > > > > return localPath; > > > > } > > > > } > > > > > > > >