summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2015-08-16 10:51:16 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2015-08-16 10:51:16 +0300
commit4fec72dc8cbd4af81ce2602e778cae849aac072b (patch)
tree2e0ef25e2e1d8e96b9a86605ba323e1ccfd868c9 /src
parentb7da4f5962d617e59f9dda3c953424df9df57d69 (diff)
downloadnginx-4fec72dc8cbd4af81ce2602e778cae849aac072b.tar.gz
nginx-4fec72dc8cbd4af81ce2602e778cae849aac072b.tar.bz2
Fixed segfault with try_files introduced by c985d90a8d1f.
If alias was used in a location given by a regular expression, nginx used to do wrong thing in try_files if a location name (i.e., regular expression) was an exact prefix of URI. The following configuration triggered a segmentation fault on a request to "/mail": location ~ /mail { alias /path/to/directory; try_files $uri =404; } Reported by Per Hansson.
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_core_module.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index d423d8b80..8c8d23cd3 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1239,7 +1239,9 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
*e.pos = '\0';
- if (alias && ngx_strncmp(name, clcf->name.data, alias) == 0) {
+ if (alias && alias != NGX_MAX_SIZE_T_VALUE
+ && ngx_strncmp(name, clcf->name.data, alias) == 0)
+ {
ngx_memmove(name, name + alias, len - alias);
path.len -= alias;
}