summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2009-08-12 08:19:39 +0000
committerDaniel Stenberg <daniel@haxx.se>2009-08-12 08:19:39 +0000
commit966cb698e61ded3600d0248ab55dde9a2fe0625c (patch)
tree96b0b4852f73a8b05c5c07cb63db05d06796a6ff
parent4b44638f4d7d59c0f7d85a9a3a893c1a756f7695 (diff)
downloadgnurl-966cb698e61ded3600d0248ab55dde9a2fe0625c.tar.gz
gnurl-966cb698e61ded3600d0248ab55dde9a2fe0625c.tar.bz2
gnurl-966cb698e61ded3600d0248ab55dde9a2fe0625c.zip
- 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.
-rw-r--r--CHANGES6
-rw-r--r--RELEASE-NOTES4
-rw-r--r--lib/tftp.c9
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,