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;
> > > >   }
> > > > }
> > >
> > >
>
>

Reply via email to