Uploaded image for project: 'Commons VFS'
  1. Commons VFS
  2. VFS-398

FtpFileObject.getChildren() fails when a folder contains a file with a colon in the name

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 2.0
    • 2.3
    • None
    • Connecting via FTP to a host running SunOS 5.10

    Description

      In line 767 of DefaultFileSystemManager.java the UriParser's extractScheme() method is called:

      String scheme = UriParser.extractScheme(buffer.toString());

      This code was added in revision 780730
      http://svn.apache.org/viewvc?view=revision&revision=780730
      It is not clear to me why this change was made.

      For the FTP provider, buffer contains a plain file name (i.e. without a path and definitely not in URI form)

      A colon is a valid character for a file name.
      However a colon will be interpreted as a URI scheme name.
      This causes an exception when the resolved path is checked using AbstractFileName.checkName()

      Sample code:

      FileObject fo = VFS.getManager().resolveFile("ftp://user:pass@host/some/path/some.file");
      fo.getParent().getChildren();

      If /some/path/ contains a child such as PREFIX:SUFFIX then an exception is thrown:

      Exception in thread "main" org.apache.commons.vfs2.FileSystemException: Invalid descendent file name "PREFIX:SUFFIX".
      at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveName(DefaultFileSystemManager.java:791)
      at org.apache.commons.vfs2.provider.AbstractFileObject.getChildren(AbstractFileObject.java:710)
      at org.apache.commons.vfs2.provider.ftp.FtpFileObject.getChildren(FtpFileObject.java:420)

      Therefore calling code is unable to list the children of the specified folder.

      Attachments

        1. VFS-398-gg-00.patch
          28 kB
          Gary D. Gregory

        Issue Links

          Activity

            People

              otto Otto Fowler
              markjleonard Mark Leonard
              Votes:
              9 Vote for this issue
              Watchers:
              14 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: