diff options
| -rw-r--r-- | CHANGES | 6 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | lib/tftp.c | 9 | 
3 files changed, 16 insertions, 3 deletions
| @@ -6,6 +6,12 @@                                    Changelog +Daniel Stenberg (12 Aug 2009) +- Carsten Lange reported a bug and provided a patch for TFTP upload and the +  sending of the TSIZE option. I don't like fixing bugs just hours before +  a release, but since it was broken and the patch fixes this for him I decided +  to get it in anyway. +  Daniel Stenberg (11 Aug 2009)  - Peter Sylvester made the HTTPS test server use specific certificates for    each test, so that the test suite can now be used to actually test the diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 0ecd1fe45..3f0fa1661 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -44,6 +44,7 @@ This release includes the following bugfixes:   o don't try SNI with SSLv2 or SSLv3 (OpenSSL and GnuTLS builds)   o libcurl+OpenSSL would wrongly acknowledge a cert if CN matched but     subjectAltName didn't + o TFTP upload sent illegal TSIZE packets  This release includes the following known bugs: @@ -57,6 +58,7 @@ advice from friends like these:   Aaron Oneal, Igor Novoseltsev, Eric Wong, Bill Hoffman, Daniel Steinberg,   Fabian Keil, Michal Marek, Reuven Wachtfogel, Markus Koetter,   Constantine Sapuntzakis, David Binderman, Johan van Selst, Alexander Beedie, - Tanguy Fautre, Scott Cantor, Curt Bogmine, Peter Sylvester, Benbuck Nason + Tanguy Fautre, Scott Cantor, Curt Bogmine, Peter Sylvester, Benbuck Nason, + Carsten Lange          Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/tftp.c b/lib/tftp.c index 0a1dc59bd..fe55e9dfc 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -443,7 +443,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)    size_t sbytes;    const char *mode = "octet";    char *filename; -  char buf[8]; +  char buf[64];    struct SessionHandle *data = state->conn->data;    CURLcode res = CURLE_OK; @@ -489,11 +489,16 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)      sbytes = 4 + strlen(filename) + strlen(mode);      /* add tsize option */ +    if(data->set.upload && (data->set.infilesize != -1)) +      snprintf( buf, sizeof(buf), "%" FORMAT_OFF_T, data->set.infilesize ); +    else +      strcpy(buf, "0"); /* the destination is large enough */ +      sbytes += tftp_option_add(state, sbytes,                                (char *)state->spacket.data+sbytes,                                TFTP_OPTION_TSIZE);      sbytes += tftp_option_add(state, sbytes, -                              (char *)state->spacket.data+sbytes, "0"); +                              (char *)state->spacket.data+sbytes, buf);      /* add blksize option */      snprintf( buf, sizeof(buf), "%d", state->requested_blksize );      sbytes += tftp_option_add(state, sbytes, | 
