Skip to content

Commit

Permalink
Variables: fixed non-indexed access of prefix vars (ticket #600).
Browse files Browse the repository at this point in the history
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().
  • Loading branch information
mdounin committed Aug 27, 2014
1 parent dbcb16f commit 8cf734c
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/http/ngx_http_variables.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -2524,6 +2523,10 @@ ngx_http_variables_init_vars(ngx_conf_t *cf)

av->index = i;

if (av->get_handler == NULL) {
break;
}

goto next;
}
}
Expand Down

0 comments on commit 8cf734c

Please sign in to comment.