From d9023c16abd0f6b89eb94bbad44d9723947f3c34 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 2 Jan 2008 22:30:34 +0000 Subject: - I fixed two cases of missing return code checks when handling chunked decoding where a write error (or abort return from a callback) didn't stop libcurl's processing. --- lib/http_chunks.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/http_chunks.c b/lib/http_chunks.c index 2bf161560..d76586cb2 100644 --- a/lib/http_chunks.c +++ b/lib/http_chunks.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -118,8 +118,11 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, /* the original data is written to the client, but we go on with the chunk read process, to properly calculate the content length*/ - if(data->set.http_te_skip && !k->ignorebody) - Curl_client_write(conn, CLIENTWRITE_BODY, datap,datalen); + if(data->set.http_te_skip && !k->ignorebody) { + result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, datalen); + if(result) + return CHUNKE_WRITE_ERROR; + } while(length) { switch(ch->state) { @@ -362,9 +365,12 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, return(CHUNKE_BAD_CHUNK); } #endif /* CURL_DOES_CONVERSIONS */ - if( !data->set.http_te_skip ) - Curl_client_write(conn, CLIENTWRITE_HEADER, - conn->trailer, conn->trlPos); + if(!data->set.http_te_skip) { + result = Curl_client_write(conn, CLIENTWRITE_HEADER, + conn->trailer, conn->trlPos); + if(result) + return CHUNKE_WRITE_ERROR; + } } ch->state = CHUNK_TRAILER; conn->trlPos=0; -- cgit v1.2.3