From 966cb698e61ded3600d0248ab55dde9a2fe0625c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 12 Aug 2009 08:19:39 +0000 Subject: - 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. --- CHANGES | 6 ++++++ RELEASE-NOTES | 4 +++- lib/tftp.c | 9 +++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index ec9096028..678645fb5 100644 --- a/CHANGES +++ b/CHANGES @@ -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, -- cgit v1.2.3