From: Daniel Stenberg Date: Mon, 12 Mar 2001 15:20:35 +0000 (+0000) Subject: made it return illegal hex in case no hexadecimal digit was read when at X-Git-Tag: curl-7_7-beta2~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d95fa648e9da36386c452c624b080bb97cf7c4b4;p=thirdparty%2Fcurl.git made it return illegal hex in case no hexadecimal digit was read when at least one was expected --- diff --git a/lib/http_chunks.c b/lib/http_chunks.c index bbc208e21b..c11003354c 100644 --- a/lib/http_chunks.c +++ b/lib/http_chunks.c @@ -115,10 +115,15 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, ch->hexindex++; } else { - return 1; /* longer hex than we support */ + return CHUNKE_TOO_LONG_HEX; /* longer hex than we support */ } } else { + if(0 == ch->hexindex) { + /* This is illegal data, we received junk where we expected + a hexadecimal digit. */ + return CHUNKE_ILLEGAL_HEX; + } /* length and datap are unmodified */ ch->hexbuffer[ch->hexindex]=0; ch->datasize=strtoul(ch->hexbuffer, NULL, 16); @@ -127,7 +132,9 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, break; case CHUNK_POSTHEX: - /* just a lame state waiting for CRLF to arrive */ + /* In this state, we're waiting for CRLF to arrive. We support + this to allow so called chunk-extensions to show up here + before the CRLF comes. */ if(*datap == '\r') ch->state = CHUNK_CR; length--;