Welcome! Log In Create A New Profile

Advanced

[nginx] SPDY: fixed operator precedence in uint16/uint32 write m...

Valentin Bartenev
May 30, 2014 11:58AM
details: http://hg.nginx.org/nginx/rev/34d460c5d186
branches:
changeset: 5716:34d460c5d186
user: Valentin Bartenev <vbart@nginx.com>
date: Thu May 29 21:15:19 2014 +0400
description:
SPDY: fixed operator precedence in uint16/uint32 write macros.

Since the type cast has precedence higher than the bit shift operator,
all values were truncated to 8 bits.

These macros are used to construct header block for SYN_REPLY frame on
platforms with strict alignment requirements. As a result, any response
that contains a header with name or value longer than 255 bytes was
corrupted on such platforms.

diffstat:

src/http/ngx_http_spdy.h | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)

diffs (25 lines):

diff -r 790ba7484bb6 -r 34d460c5d186 src/http/ngx_http_spdy.h
--- a/src/http/ngx_http_spdy.h Wed May 28 20:18:05 2014 +0400
+++ b/src/http/ngx_http_spdy.h Thu May 29 21:15:19 2014 +0400
@@ -230,13 +230,16 @@ ngx_int_t ngx_http_spdy_send_output_queu
#else

#define ngx_spdy_frame_write_uint16(p, s) \
- ((p)[0] = (u_char) (s) >> 8, (p)[1] = (u_char) (s), (p) + sizeof(uint16_t))
+ ((p)[0] = (u_char) ((s) >> 8), \
+ (p)[1] = (u_char) (s), \
+ (p) + sizeof(uint16_t))

#define ngx_spdy_frame_write_uint32(p, s) \
- ((p)[0] = (u_char) (s) >> 24, \
- (p)[1] = (u_char) (s) >> 16, \
- (p)[2] = (u_char) (s) >> 8, \
- (p)[3] = (u_char) (s), (p) + sizeof(uint32_t))
+ ((p)[0] = (u_char) ((s) >> 24), \
+ (p)[1] = (u_char) ((s) >> 16), \
+ (p)[2] = (u_char) ((s) >> 8), \
+ (p)[3] = (u_char) (s), \
+ (p) + sizeof(uint32_t))

#endif


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] SPDY: fixed operator precedence in uint16/uint32 write m...

Valentin Bartenev 831 May 30, 2014 11:58AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 204
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready