mirror of
https://github.com/nginx/nginx.git
synced 2025-06-12 05:11:37 +08:00
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().
This commit is contained in:
parent
dbcb16ff68
commit
8cf734c7b4
@ -2511,8 +2511,7 @@ ngx_http_variables_init_vars(ngx_conf_t *cf)
|
||||
|
||||
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 *cf)
|
||||
|
||||
av->index = i;
|
||||
|
||||
if (av->get_handler == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user