aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2005-05-29 22:30:48 +0000
committerDaniel Stenberg <daniel@haxx.se>2005-05-29 22:30:48 +0000
commita7846189cdb09a9d7ecca43f045cd0fb4517fe39 (patch)
tree5f632ac355ecf17962350a054a6d52b4d1d36bb4
parent4762995d1f8eb79986f777e812c3b0324a7c11d3 (diff)
Eric Cooper reported about a problem with HTTP servers that responds with
binary zeroes within the headers. They confused libcurl to do wrong so the downloaded headers become incomplete. The fix is now verified with test case 262.
-rw-r--r--CHANGES6
-rw-r--r--lib/transfer.c4
-rw-r--r--tests/data/Makefile.am2
-rw-r--r--tests/data/test262bin0 -> 1114 bytes
4 files changed, 9 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index b8ea14d8c..10959713b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,12 @@
Changelog
+Daniel (30 May 2005)
+- Eric Cooper reported about a problem with HTTP servers that responds with
+ binary zeroes within the headers. They confused libcurl to do wrong so the
+ downloaded headers become incomplete. The fix is now verified with test case
+ 262.
+
Daniel (24 May 2005)
- Andres Garcia provided a text mode patch for several test cases so that they
do text comparisions better on Windows (newline-wise).
diff --git a/lib/transfer.c b/lib/transfer.c
index 3c1b52a21..fdc825bd2 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -360,7 +360,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
/* str_start is start of line within buf */
k->str_start = k->str;
- k->end_ptr = strchr (k->str_start, '\n');
+ k->end_ptr = memchr(k->str_start, '\n', nread);
if (!k->end_ptr) {
/* Not a complete header line within buffer, append the data to
@@ -428,7 +428,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
}
/* copy to end of line */
- strncpy (k->hbufp, k->str_start, full_length);
+ memcpy(k->hbufp, k->str_start, full_length);
k->hbufp += full_length;
k->hbuflen += full_length;
*k->hbufp = 0;
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 8d64cf81a..50ef1ec8c 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -32,4 +32,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
test231 test232 test228 test229 test233 test234 test235 test236 test520 \
test237 test238 test239 test243 test245 test246 test247 test248 test249 \
test250 test251 test252 test253 test254 test255 test521 test522 test523 \
- test256 test257 test258 test259 test260 test261
+ test256 test257 test258 test259 test260 test261 test262
diff --git a/tests/data/test262 b/tests/data/test262
new file mode 100644
index 000000000..b9b5a61f4
--- /dev/null
+++ b/tests/data/test262
Binary files differ