[nginx] Variables: fixed non-indexed access of prefix vars (tick...
Maxim Dounin
mdounin at mdounin.ru
Wed Aug 27 17:46:14 UTC 2014
details: http://hg.nginx.org/nginx/rev/6c99c5f00fc9
branches:
changeset: 5815:6c99c5f00fc9
user: Maxim Dounin <mdounin at mdounin.ru>
date: Wed Aug 27 21:38:04 2014 +0400
description:
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().
diffstat:
src/http/ngx_http_variables.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diffs (24 lines):
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c
--- a/src/http/ngx_http_variables.c
+++ b/src/http/ngx_http_variables.c
@@ -2511,8 +2511,7 @@ ngx_http_variables_init_vars(ngx_conf_t
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 @@ ngx_http_variables_init_vars(ngx_conf_t
av->index = i;
+ if (av->get_handler == NULL) {
+ break;
+ }
+
goto next;
}
}
More information about the nginx-devel
mailing list