]> granicus.if.org Git - curl/commitdiff
FTP: handle "rubbish" in front of directory name in 257 responses
authorBill Middlecamp <Bill.Middlecamp@quantum.com>
Tue, 9 Apr 2013 20:18:33 +0000 (22:18 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 9 Apr 2013 20:18:33 +0000 (22:18 +0200)
When doing PWD, there's a 257 response which apparently some servers
prefix with a comment before the path instead of after it as is
otherwise the norm.

Failing to parse this, several otherwise legitimate use cases break.

Bug: http://curl.haxx.se/mail/lib-2013-04/0113.html

lib/ftp.c

index ec586baa7fdf6a922cc1ea5744451553facd7cde..dce23de751fbea564e4c0ff8ac719c70d73a85d3 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2871,13 +2871,19 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
           return CURLE_OUT_OF_MEMORY;
 
         /* Reply format is like
-           257<space>"<directory-name>"<space><commentary> and the RFC959
-           says
+           257<space>[rubbish]"<directory-name>"<space><commentary> and the
+           RFC959 says
 
            The directory name can contain any character; embedded
            double-quotes should be escaped by double-quotes (the
            "quote-doubling" convention).
         */
+
+        /* scan for the first double-quote for non-standard responses */
+        while(ptr < &data->state.buffer[sizeof(data->state.buffer)]
+              && *ptr != '\n' && *ptr != '\0' && *ptr != '"')
+          ptr++;
+
         if('\"' == *ptr) {
           /* it started good */
           ptr++;