diff --git a/lib/http.c b/lib/http.c index 93a5e3e33..ddec280f4 100644 --- a/lib/http.c +++ b/lib/http.c @@ -977,12 +977,15 @@ Curl_send_buffer *Curl_add_buffer_init(void) * Returns CURLcode */ CURLcode Curl_add_buffer_send(Curl_send_buffer *in, - struct connectdata *conn, - long *bytes_written, /* add the number of sent bytes - to this counter */ - size_t included_body_bytes, /* how much of the buffer - contains body data */ - int socketindex) + struct connectdata *conn, + + /* add the number of sent bytes to this + counter */ + long *bytes_written, + + /* how much of the buffer contains body data */ + size_t included_body_bytes, + int socketindex) { ssize_t amount; @@ -1069,7 +1072,10 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in, accordingly */ http->writebytecount += bodylen; - *bytes_written += amount; + /* 'amount' can never be a very large value here so typecasting it so a + signed 31 bit value should not cause problems even if ssize_t is + 64bit */ + *bytes_written += (long)amount; if(http) { if((size_t)amount != size) { @@ -1380,7 +1386,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, if(CURLE_OK == result) { /* Now send off the request */ result = Curl_add_buffer_send(req_buffer, conn, - &data->info.request_size, 0, sockindex); + &data->info.request_size, 0, sockindex); } req_buffer = NULL; if(result) diff --git a/lib/http.h b/lib/http.h index b7c1abf66..3007c319f 100644 --- a/lib/http.h +++ b/lib/http.h @@ -56,11 +56,10 @@ Curl_send_buffer *Curl_add_buffer_init(void); CURLcode Curl_add_bufferf(Curl_send_buffer *in, const char *fmt, ...); CURLcode Curl_add_buffer(Curl_send_buffer *in, const void *inptr, size_t size); CURLcode Curl_add_buffer_send(Curl_send_buffer *in, - struct connectdata *conn, - long *bytes_written, - size_t included_body_bytes, - int socketindex); - + struct connectdata *conn, + long *bytes_written, + size_t included_body_bytes, + int socketindex); CURLcode Curl_add_timecondition(struct SessionHandle *data, Curl_send_buffer *buf);