From: Stefan Eissing Date: Wed, 14 Feb 2024 15:27:23 +0000 (+0100) Subject: http_chunks: fix the accounting of consumed bytes X-Git-Tag: curl-8_7_0~170 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=59e2c78af3a5588d6e6ae6d2223b222f067e054b;p=thirdparty%2Fcurl.git http_chunks: fix the accounting of consumed bytes Prior to this change chunks were handled correctly although in verbose mode libcurl could incorrectly warn of "Leftovers after chunking" even if there were none. Reported-by: Michael Kaufmann Fixes https://github.com/curl/curl/issues/12937 Closes https://github.com/curl/curl/pull/12939 --- diff --git a/lib/http_chunks.c b/lib/http_chunks.c index 039c179c44..ad1ee9adab 100644 --- a/lib/http_chunks.c +++ b/lib/http_chunks.c @@ -152,6 +152,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, ch->hexbuffer[ch->hexindex++] = *buf; buf++; blen--; + (*pconsumed)++; } else { char *endptr; @@ -189,6 +190,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, buf++; blen--; + (*pconsumed)++; break; case CHUNK_DATA: @@ -236,6 +238,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, } buf++; blen--; + (*pconsumed)++; break; case CHUNK_TRAILER: @@ -293,6 +296,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, } buf++; blen--; + (*pconsumed)++; break; case CHUNK_TRAILER_CR: @@ -300,6 +304,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, ch->state = CHUNK_TRAILER_POSTCR; buf++; blen--; + (*pconsumed)++; } else { ch->state = CHUNK_FAILED; @@ -320,6 +325,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, /* skip if CR */ buf++; blen--; + (*pconsumed)++; } /* now wait for the final LF */ ch->state = CHUNK_STOP; @@ -328,6 +334,7 @@ static CURLcode httpchunk_readwrite(struct Curl_easy *data, case CHUNK_STOP: if(*buf == 0x0a) { blen--; + (*pconsumed)++; /* Record the length of any data left in the end of the buffer even if there's no more chunks to read */ ch->datasize = blen;