Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
2.0
-
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
Attachments
Issue Links
- links to