]> granicus.if.org Git - curl/commitdiff
- Pat Ray in bug #2958474 pointed out an off-by-one case when receiving a
authorDaniel Stenberg <daniel@haxx.se>
Fri, 26 Feb 2010 22:55:30 +0000 (22:55 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 26 Feb 2010 22:55:30 +0000 (22:55 +0000)
  chunked-encoding trailer.

  http://curl.haxx.se/bug/view.cgi?id=2958474

CHANGES
RELEASE-NOTES
lib/http_chunks.c

diff --git a/CHANGES b/CHANGES
index 35ed8848efdb730b80a20e1f55fd840f28b20520..4a79a4c467f55cbff3fdaba3bc88a077a9937533 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,12 @@
 
                                   Changelog
 
+Daniel Stenberg (26 Feb 2010)
+- Pat Ray in bug #2958474 pointed out an off-by-one case when receiving a
+  chunked-encoding trailer.
+
+  http://curl.haxx.se/bug/view.cgi?id=2958474
+
 Daniel Fandrich (25 Feb 2010)
 - Fixed a couple of out of memory leaks and a segfault in the SMTP & IMAP code.
 
index c33e6a0cec8ba24502034890072a067969e1f174..b6bd52512703cf445771a0a60901babcb4f489fc 100644 (file)
@@ -20,6 +20,7 @@ This release includes the following bugfixes:
  o SMTP: now waits for 250 after the DATA transfer
  o SMTP: use angle brackets in RCPT TO
  o curl --trace-time not using local time
+ o off-by-one in the chunked encoding trailer parser
 
 This release includes the following known bugs:
 
@@ -28,6 +29,7 @@ This release includes the following known bugs:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
- Steven M. Schweda, Yang Tse, Jack Zhang, Tom Donovan, Martin Hager
+ Steven M. Schweda, Yang Tse, Jack Zhang, Tom Donovan, Martin Hager,
+ Daniel Fandrich, Patrick Monnerat, Pat Ray
 
         Thanks! (and sorry if I forgot to mention someone)
index ee35d66032649470be6ec9e56eb5d841d6d128ce..3649f9ee02abcaed33faa204f3bae7deb9033016 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -306,14 +306,17 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
       /* conn->trailer is assumed to be freed in url.c on a
          connection basis */
       if(conn->trlPos >= conn->trlMax) {
+        /* in this logic we always allocate one byte more than trlMax
+           contains, just because CHUNK_TRAILER_POSTCR will append two bytes
+           so we need to make sure we have room for an extra byte */
         char *ptr;
         if(conn->trlMax) {
           conn->trlMax *= 2;
-          ptr = realloc(conn->trailer,conn->trlMax);
+          ptr = realloc(conn->trailer, conn->trlMax + 1);
         }
         else {
           conn->trlMax=128;
-          ptr = malloc(conn->trlMax);
+          ptr = malloc(conn->trlMax + 1);
         }
         if(!ptr)
           return CHUNKE_OUT_OF_MEMORY;