# HG changeset patch # User Igor Sysoev # Date 1242129929 0 # Node ID 0449d289256c6ff7a4d28161164ae9ba1849db87 # Parent cc5d214387f47722a9cde2e7308ad4ca7a740478 test finalized image filter context before testing image_filter off this fixes SIGFPE if image filter errors are passed to named location diff --git a/src/http/modules/ngx_http_image_filter_module.c b/src/http/modules/ngx_http_image_filter_module.c --- a/src/http/modules/ngx_http_image_filter_module.c +++ b/src/http/modules/ngx_http_image_filter_module.c @@ -162,6 +162,13 @@ ngx_http_image_header_filter(ngx_http_re return ngx_http_next_header_filter(r); } + ctx = ngx_http_get_module_ctx(r, ngx_http_image_filter_module); + + if (ctx) { + ngx_http_set_ctx(r, NULL, ngx_http_image_filter_module); + return ngx_http_next_header_filter(r); + } + conf = ngx_http_get_module_loc_conf(r, ngx_http_image_filter_module); if (conf->filter == NGX_HTTP_IMAGE_OFF) { @@ -181,13 +188,6 @@ ngx_http_image_header_filter(ngx_http_re return NGX_ERROR; } - ctx = ngx_http_get_module_ctx(r, ngx_http_image_filter_module); - - if (ctx) { - ngx_http_set_ctx(r, NULL, ngx_http_image_filter_module); - return ngx_http_next_header_filter(r); - } - ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_image_filter_ctx_t)); if (ctx == NULL) { return NGX_ERROR;