diff options
author | Bill Middlecamp <Bill.Middlecamp@quantum.com> | 2013-04-09 22:18:33 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-04-09 22:18:33 +0200 |
commit | e0fb2d86c9f789131588a7cc93e9e881d601cecd (patch) | |
tree | 837147a6b8390524d88b2ca4d602d085c25909e9 | |
parent | 658ec97055456f739222aa2a5719a4d403ced99a (diff) |
FTP: handle "rubbish" in front of directory name in 257 responses
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
-rw-r--r-- | lib/ftp.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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++; |