Mercurial > hg > nginx
changeset 5815:6c99c5f00fc9
Variables: fixed non-indexed access of prefix vars (ticket #600).
Previously, a configuration like
location / {
ssi on;
ssi_types *;
set $http_foo "bar";
return 200 '<!--#echo var="http_foo" -->\n';
}
resulted in NULL pointer dereference in ngx_http_get_variable() as
the variable was explicitly added to the variables hash, but its
get_handler wasn't properly set in the hash. Fix is to make sure
that get_handler is properly set by ngx_http_variables_init_vars().
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 27 Aug 2014 21:38:04 +0400 |
parents | a5886df87cbb |
children | 16a371063d20 |
files | src/http/ngx_http_variables.c |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_variables.c Mon Aug 18 13:23:45 2014 +0400 +++ b/src/http/ngx_http_variables.c Wed Aug 27 21:38:04 2014 +0400 @@ -2511,8 +2511,7 @@ av = key[n].value; - if (av->get_handler - && v[i].name.len == key[n].key.len + if (v[i].name.len == key[n].key.len && ngx_strncmp(v[i].name.data, key[n].key.data, v[i].name.len) == 0) { @@ -2524,6 +2523,10 @@ av->index = i; + if (av->get_handler == NULL) { + break; + } + goto next; } }