Mercurial > hg > nginx
changeset 4647:a321eadcb16c
Fixed memory leak if $geoip_org variable was used.
Patch by Denis F. Latypoff (slightly modified).
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 28 May 2012 13:17:48 +0000 |
parents | 959371df1806 |
children | 70296867c740 |
files | src/http/modules/ngx_http_geoip_module.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_geoip_module.c Thu May 24 07:35:12 2012 +0000 +++ b/src/http/modules/ngx_http_geoip_module.c Mon May 28 13:17:48 2012 +0000 @@ -291,6 +291,7 @@ ngx_http_geoip_variable_handler_pt handler = (ngx_http_geoip_variable_handler_pt) data; + size_t len; const char *val; ngx_http_geoip_conf_t *gcf; @@ -306,11 +307,21 @@ goto not_found; } - v->len = ngx_strlen(val); + len = ngx_strlen(val); + v->data = ngx_pnalloc(r->pool, len); + if (v->data == NULL) { + ngx_free(val); + return NGX_ERROR; + } + + ngx_memcpy(v->data, val, len); + + v->len = len; v->valid = 1; v->no_cacheable = 0; v->not_found = 0; - v->data = (u_char *) val; + + ngx_free(val); return NGX_OK;