mirror of
https://github.com/nginx/nginx.git
synced 2025-01-05 05:34:56 -06:00
Fixed handling of very long locations (ticket #2435).
Previously, location prefix length in ngx_http_location_tree_node_t was stored as "u_char", and therefore location prefixes longer than 255 bytes were handled incorrectly. Fix is to use "u_short" instead. With "u_short", prefixes up to 65535 bytes can be safely used, and this isn't reachable due to NGX_CONF_BUFFER, which is 4096 bytes.
This commit is contained in:
parent
5c18b5bc3f
commit
f20c6e0eb5
@ -1130,7 +1130,7 @@ ngx_http_create_locations_tree(ngx_conf_t *cf, ngx_queue_t *locations,
|
||||
node->auto_redirect = (u_char) ((lq->exact && lq->exact->auto_redirect)
|
||||
|| (lq->inclusive && lq->inclusive->auto_redirect));
|
||||
|
||||
node->len = (u_char) len;
|
||||
node->len = (u_short) len;
|
||||
ngx_memcpy(node->name, &lq->name->data[prefix], len);
|
||||
|
||||
ngx_queue_split(locations, q, &tail);
|
||||
|
@ -463,8 +463,8 @@ struct ngx_http_location_tree_node_s {
|
||||
ngx_http_core_loc_conf_t *exact;
|
||||
ngx_http_core_loc_conf_t *inclusive;
|
||||
|
||||
u_short len;
|
||||
u_char auto_redirect;
|
||||
u_char len;
|
||||
u_char name[1];
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user