diff options
author | Daniel Stenberg <daniel@haxx.se> | 2014-04-15 13:49:18 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-04-26 18:17:10 +0200 |
commit | d5ec44ca4cca9bbe6c21a1d2a94b37cba77661ff (patch) | |
tree | 7d4f6429f80bacd0a314726572bdddbc265f7c72 /lib/ftp.c | |
parent | 9c941e92c4bd3d2a5dbe243f7517b6a6029afc6e (diff) |
INFILESIZE: fields in UserDefined must not be changed run-time
set.infilesize in this case was modified in several places, which could
lead to repeated requests using the same handle to get unintendent/wrong
consequences based on what the previous request did!
Diffstat (limited to 'lib/ftp.c')
-rw-r--r-- | lib/ftp.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -507,7 +507,7 @@ static CURLcode InitiateTransfer(struct connectdata *conn) /* When we know we're uploading a specified file, we can get the file size prior to the actual upload. */ - Curl_pgrsSetUploadSize(data, data->set.infilesize); + Curl_pgrsSetUploadSize(data, data->state.infilesize); /* set the SO_SNDBUF for the secondary socket for those who need it */ Curl_sndbufset(conn->sock[SECONDARYSOCKET]); @@ -1683,10 +1683,10 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn, } } /* now, decrease the size of the read */ - if(data->set.infilesize>0) { - data->set.infilesize -= data->state.resume_from; + if(data->state.infilesize>0) { + data->state.infilesize -= data->state.resume_from; - if(data->set.infilesize <= 0) { + if(data->state.infilesize <= 0) { infof(data, "File already completely uploaded\n"); /* no data to transfer */ @@ -3382,13 +3382,13 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, use checking further */ ; else if(data->set.upload) { - if((-1 != data->set.infilesize) && - (data->set.infilesize != *ftp->bytecountp) && + if((-1 != data->state.infilesize) && + (data->state.infilesize != *ftp->bytecountp) && !data->set.crlf && (ftp->transfer == FTPTRANSFER_BODY)) { failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T " out of %" CURL_FORMAT_CURL_OFF_T " bytes)", - *ftp->bytecountp, data->set.infilesize); + *ftp->bytecountp, data->state.infilesize); result = CURLE_PARTIAL_FILE; } } |