- Norbert Frese filed bug report #1951588: "Problem with curlftpfs and

libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
  identical report to what Denis Golovan reported in
  http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the
  user/password pointers properly even though there might've been a new
  struct/cconnection getting used.
This commit is contained in:
Daniel Stenberg
2008-04-28 21:29:17 +00:00
parent c3ba2198b1
commit 7a6cff4b3a
3 changed files with 25 additions and 11 deletions

View File

@@ -3006,20 +3006,22 @@ static CURLcode ftp_easy_statemach(struct connectdata *conn)
static CURLcode ftp_init(struct connectdata *conn)
{
struct SessionHandle *data = conn->data;
struct FTP *ftp;
if(data->state.proto.ftp)
return CURLE_OK;
struct FTP *ftp = data->state.proto.ftp;
if(!ftp) {
ftp = (struct FTP *)calloc(sizeof(struct FTP), 1);
if(!ftp)
return CURLE_OUT_OF_MEMORY;
ftp = (struct FTP *)calloc(sizeof(struct FTP), 1);
if(!ftp)
return CURLE_OUT_OF_MEMORY;
data->state.proto.ftp = ftp;
data->state.proto.ftp = ftp;
}
/* get some initial data into the ftp struct */
ftp->bytecountp = &data->req.bytecount;
/* no need to duplicate them, this connectdata struct won't change */
/* No need to duplicate user+password, the connectdata struct won't change
during a session, but we re-init them here since on subsequent inits
since the conn struct may have changed or been replaced.
*/
ftp->user = conn->user;
ftp->passwd = conn->passwd;
if(isBadFtpString(ftp->user) || isBadFtpString(ftp->passwd))