From d143119e3cb939b69cb77d5bce6ac37f16e7c197 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Wed, 15 Jan 2014 13:23:31 +0400 Subject: [PATCH] SPDY: fixed off_t/size_t type conversions on 32 bits platforms. Parameters of ngx_http_spdy_filter_get_shadow() are changed from size_t to off_t since the last call of the function may get size and offset from the rest of a file buffer. This fixes possible data loss rightfully complained by MSVC on 32 bits systems where off_t is 8 bytes long while size_t is only 4 bytes. The other two type casts are needed just to suppress warnings about possible data loss also complained by MSVC but false positive in these cases. --- src/http/ngx_http_spdy_filter_module.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/http/ngx_http_spdy_filter_module.c b/src/http/ngx_http_spdy_filter_module.c index 5d45ebc1b..7a7559ee8 100644 --- a/src/http/ngx_http_spdy_filter_module.c +++ b/src/http/ngx_http_spdy_filter_module.c @@ -35,8 +35,7 @@ static ngx_inline ngx_int_t ngx_http_spdy_filter_send( ngx_connection_t *fc, ngx_http_spdy_stream_t *stream); static ngx_chain_t *ngx_http_spdy_filter_get_shadow( - ngx_http_spdy_stream_t *stream, ngx_buf_t *buf, size_t offset, - size_t size); + ngx_http_spdy_stream_t *stream, ngx_buf_t *buf, off_t offset, off_t size); static ngx_http_spdy_out_frame_t *ngx_http_spdy_filter_get_data_frame( ngx_http_spdy_stream_t *stream, size_t len, ngx_chain_t *first, ngx_chain_t *last); @@ -702,7 +701,7 @@ ngx_http_spdy_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) *ln = cl; ln = &cl->next; - rest -= size; + rest -= (size_t) size; in = in->next; if (in == NULL) { @@ -752,7 +751,7 @@ ngx_http_spdy_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) } if (limit < (off_t) slcf->chunk_size) { - frame_size = limit; + frame_size = (size_t) limit; } } } @@ -777,7 +776,7 @@ ngx_http_spdy_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) static ngx_chain_t * ngx_http_spdy_filter_get_shadow(ngx_http_spdy_stream_t *stream, ngx_buf_t *buf, - size_t offset, size_t size) + off_t offset, off_t size) { ngx_buf_t *chunk; ngx_chain_t *cl;