[ 
https://issues.apache.org/jira/browse/NET-492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13529920#comment-13529920
 ] 

Sebb commented on NET-492:
--------------------------

Hopefully, this now fixes the issue:

URL: http://svn.apache.org/viewvc?rev=1420638&view=rev
Log:
NET-492 FTPClient.printWorkingDirectory() incorrectly parses certain valid PWD 
command results

Modified:
    
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java

This fix will fail to extract the path correctly if the commentary contains a 
quote followed by a space.
Just realised it will also fail to detect a comment followed by trailing quote.

Looks like one needs to detect the trailing path quote by looking for the first 
un-doubled quote. Drat.

                
> FTPClient.printWorkingDirectory() incorrectly parses certain valid PWD 
> command results
> --------------------------------------------------------------------------------------
>
>                 Key: NET-492
>                 URL: https://issues.apache.org/jira/browse/NET-492
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 3.2
>            Reporter: Tomasz Jedrzejewski
>            Priority: Minor
>
> The new implementation of FTPClient.printWorkingDirectory() which tries to 
> follow RFC959 is invalid and can return unescaped or invalid path in certain 
> circumstances. According to the commentary, the author interpreted the RFC 
> that the output is always constructed in the following way:
> 257<space>"<directory-name>"<space><commentary>
> Where any double quotes within the directory name are doubled.
> First issue: the RFC does not state that the output for PWD looks exactly 
> like this, but that the reply code is the same, as for MKD. Especially, PWD 
> does not return any commentary, and VSFTPD server (which I'm trying to talk 
> to) does not print out the terminating space, but ends up the output on the 
> last double quote. The algorithm uses the following code to detect the end of 
> the quoted path:
> int end = reply.lastIndexOf("\" ");
> If there is no terminating space, the last double quote cannot be found, and 
> as a result, the method returns the unescaped directory name:
> "/foo"
> instead of
> /foo
> Second issue: the current implementation would not work in case of the 
> following directory:
> /Foo/Bar" /Joe
> PWD command output:
> 257 "/Foo/Bar"" /Joe"
> Value returned by printWorkingDirectory():
> /Foo/Bar"
> Note to the administrators: the problem has been found in commons-net 3.2 
> version, but JIRA claims it is unreleased and does not allow me to choose it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to