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

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.0
    • Fix Version/s: 2.3
    • Labels:
      None
    • Environment:

      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 Gregory

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: