mirror of
https://github.com/nginx/nginx.git
synced 2024-12-19 05:33:52 -06:00
Added protection against r->main->count overflow by subrequests.
This overflow has become possible after the change in 06e850859a26, since concurrent subrequests are not limited now and each of them is counted in r->main->count.
This commit is contained in:
parent
0d3b15729c
commit
4ec67cf86f
@ -2433,6 +2433,16 @@ ngx_http_subrequest(ngx_http_request_t *r,
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1000 is reserved for other purposes.
|
||||
*/
|
||||
if (r->main->count >= 65535 - 1000) {
|
||||
ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
|
||||
"request reference counter overflow "
|
||||
"while processing \"%V\"", uri);
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
sr = ngx_pcalloc(r->pool, sizeof(ngx_http_request_t));
|
||||
if (sr == NULL) {
|
||||
return NGX_ERROR;
|
||||
|
@ -439,8 +439,8 @@ struct ngx_http_request_s {
|
||||
|
||||
ngx_http_cleanup_t *cleanup;
|
||||
|
||||
unsigned count:16;
|
||||
unsigned subrequests:8;
|
||||
unsigned count:8;
|
||||
unsigned blocked:8;
|
||||
|
||||
unsigned aio:1;
|
||||
|
Loading…
Reference in New Issue
Block a user