The official NGINX Open Source repository.
Go to file
Sergey Kandaurov 586ef968f9 HTTP/2: avoid left-shifting signed integer into the sign bit.
On non-aligned platforms, properly cast argument before left-shifting it in
ngx_http_v2_parse_uint32 that is used with u_char.  Otherwise it propagates
to int to hold the value and can step over the sign bit.  Usually, on known
compilers, this results in negation.  Furthermore, a subsequent store into a
wider type, that is ngx_uint_t on 64-bit platforms, results in sign-extension.

In practice, this can be observed in debug log as a very large exclusive bit
value, when client sent PRIORITY frame with exclusive bit set:

: *14 http2 PRIORITY frame sid:5 on 1 excl:8589934591 weight:17

Found with UndefinedBehaviorSanitizer.
2016-07-07 21:03:21 +03:00
auto Configure: stop polluting NGX_ namespace. 2016-06-27 15:00:06 -07:00
conf Added the REQUEST_SCHEME parameter. 2015-06-05 22:23:26 +03:00
contrib Fixed spelling. 2016-04-07 11:50:13 +03:00
docs nginx-1.11.2-RELEASE 2016-07-05 18:56:14 +03:00
misc Updated PCRE used for win32 builds. 2016-07-05 18:30:56 +03:00
src HTTP/2: avoid left-shifting signed integer into the sign bit. 2016-07-07 21:03:21 +03:00
.hgtags release-1.11.2 tag 2016-07-05 18:56:14 +03:00