mirror of
https://github.com/nginx/nginx.git
synced 2024-12-16 06:09:00 +08:00
Avoid left-shifting integers into the sign bit, which is undefined.
Found with UndefinedBehaviorSanitizer.
This commit is contained in:
parent
678991a8f6
commit
6299f5e914
@ -1563,7 +1563,7 @@ ngx_escape_uri(u_char *dst, u_char *src, size_t size, ngx_uint_t type)
|
|||||||
n = 0;
|
n = 0;
|
||||||
|
|
||||||
while (size) {
|
while (size) {
|
||||||
if (escape[*src >> 5] & (1 << (*src & 0x1f))) {
|
if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
src++;
|
src++;
|
||||||
@ -1574,7 +1574,7 @@ ngx_escape_uri(u_char *dst, u_char *src, size_t size, ngx_uint_t type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (size) {
|
while (size) {
|
||||||
if (escape[*src >> 5] & (1 << (*src & 0x1f))) {
|
if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
|
||||||
*dst++ = '%';
|
*dst++ = '%';
|
||||||
*dst++ = hex[*src >> 4];
|
*dst++ = hex[*src >> 4];
|
||||||
*dst++ = hex[*src & 0xf];
|
*dst++ = hex[*src & 0xf];
|
||||||
|
@ -1000,7 +1000,7 @@ ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
|
|||||||
n = 0;
|
n = 0;
|
||||||
|
|
||||||
while (size) {
|
while (size) {
|
||||||
if (escape[*src >> 5] & (1 << (*src & 0x1f))) {
|
if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
src++;
|
src++;
|
||||||
@ -1011,7 +1011,7 @@ ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (size) {
|
while (size) {
|
||||||
if (escape[*src >> 5] & (1 << (*src & 0x1f))) {
|
if (escape[*src >> 5] & (1U << (*src & 0x1f))) {
|
||||||
*dst++ = '\\';
|
*dst++ = '\\';
|
||||||
*dst++ = 'x';
|
*dst++ = 'x';
|
||||||
*dst++ = hex[*src >> 4];
|
*dst++ = hex[*src >> 4];
|
||||||
|
@ -836,7 +836,7 @@ ngx_http_userid_init_worker(ngx_cycle_t *cycle)
|
|||||||
ngx_gettimeofday(&tp);
|
ngx_gettimeofday(&tp);
|
||||||
|
|
||||||
/* use the most significant usec part that fits to 16 bits */
|
/* use the most significant usec part that fits to 16 bits */
|
||||||
start_value = ((tp.tv_usec / 20) << 16) | ngx_pid;
|
start_value = (((uint32_t) tp.tv_usec / 20) << 16) | ngx_pid;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
@ -481,7 +481,7 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
|||||||
/* check "/.", "//", "%", and "\" (Win32) in URI */
|
/* check "/.", "//", "%", and "\" (Win32) in URI */
|
||||||
case sw_after_slash_in_uri:
|
case sw_after_slash_in_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
state = sw_check_uri;
|
state = sw_check_uri;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -540,7 +540,7 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
|||||||
/* check "/", "%" and "\" (Win32) in URI */
|
/* check "/", "%" and "\" (Win32) in URI */
|
||||||
case sw_check_uri:
|
case sw_check_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,7 +626,7 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
|||||||
/* URI */
|
/* URI */
|
||||||
case sw_uri:
|
case sw_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1131,7 +1131,7 @@ ngx_http_parse_uri(ngx_http_request_t *r)
|
|||||||
/* check "/.", "//", "%", and "\" (Win32) in URI */
|
/* check "/.", "//", "%", and "\" (Win32) in URI */
|
||||||
case sw_after_slash_in_uri:
|
case sw_after_slash_in_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
state = sw_check_uri;
|
state = sw_check_uri;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1179,7 +1179,7 @@ ngx_http_parse_uri(ngx_http_request_t *r)
|
|||||||
/* check "/", "%" and "\" (Win32) in URI */
|
/* check "/", "%" and "\" (Win32) in URI */
|
||||||
case sw_check_uri:
|
case sw_check_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1228,7 +1228,7 @@ ngx_http_parse_uri(ngx_http_request_t *r)
|
|||||||
/* URI */
|
/* URI */
|
||||||
case sw_uri:
|
case sw_uri:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1289,7 +1289,7 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
|
|||||||
|
|
||||||
case sw_usual:
|
case sw_usual:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
ch = *p++;
|
ch = *p++;
|
||||||
break;
|
break;
|
||||||
@ -1358,7 +1358,7 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
|
|||||||
|
|
||||||
case sw_slash:
|
case sw_slash:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
state = sw_usual;
|
state = sw_usual;
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
ch = *p++;
|
ch = *p++;
|
||||||
@ -1401,7 +1401,7 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
|
|||||||
|
|
||||||
case sw_dot:
|
case sw_dot:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
state = sw_usual;
|
state = sw_usual;
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
ch = *p++;
|
ch = *p++;
|
||||||
@ -1442,7 +1442,7 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
|
|||||||
|
|
||||||
case sw_dot_dot:
|
case sw_dot_dot:
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
state = sw_usual;
|
state = sw_usual;
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
ch = *p++;
|
ch = *p++;
|
||||||
@ -1836,7 +1836,7 @@ ngx_http_parse_unsafe_uri(ngx_http_request_t *r, ngx_str_t *uri,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usual[ch >> 5] & (1 << (ch & 0x1f))) {
|
if (usual[ch >> 5] & (1U << (ch & 0x1f))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user