summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2017-06-14 12:49:20 +0300
committerRuslan Ermilov <ru@nginx.com>2017-06-14 12:49:20 +0300
commitfa0992ed295ba83f711ca3d1ba8fc1baaa5760ca (patch)
tree27f6d2a3fb5e068ba1f3ef2de9a15d89c735c27d
parent731d1fee8a64538882f4a7c0d2cce1137410cb15 (diff)
downloadnginx-fa0992ed295ba83f711ca3d1ba8fc1baaa5760ca.tar.gz
Gzip: fixed style in $gzip_ratio variable handler.
The current style in variable handlers returning NGX_OK is to either set v->not_found to 1, or to initialize the entire ngx_http_variable_value_t structure. In theory, always setting v->valid = 1 for NGX_OK would be useful, which would mean that the value was computed and is thus valid, including the special case of v->not_found = 1. But currently that's not the case and causes the (v->valid || v->not_found) check to access an uninitialized v->valid value, which is safe only because its value doesn't matter when v->not_found is set.
-rw-r--r--src/http/modules/ngx_http_gzip_filter_module.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c
index 287fd3674..73b6d89be 100644
--- a/src/http/modules/ngx_http_gzip_filter_module.c
+++ b/src/http/modules/ngx_http_gzip_filter_module.c
@@ -1084,10 +1084,6 @@ ngx_http_gzip_ratio_variable(ngx_http_request_t *r,
ngx_uint_t zint, zfrac;
ngx_http_gzip_ctx_t *ctx;
- v->valid = 1;
- v->no_cacheable = 0;
- v->not_found = 0;
-
ctx = ngx_http_get_module_ctx(r, ngx_http_gzip_filter_module);
if (ctx == NULL || ctx->zout == 0) {
@@ -1095,6 +1091,10 @@ ngx_http_gzip_ratio_variable(ngx_http_request_t *r,
return NGX_OK;
}
+ v->valid = 1;
+ v->no_cacheable = 0;
+ v->not_found = 0;
+
v->data = ngx_pnalloc(r->pool, NGX_INT32_LEN + 3);
if (v->data == NULL) {
return NGX_ERROR;