mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 18:29:00 +08:00
axe ngx_http_perl_cleanup_sv(): all SVs should be freed
by perl_free() in ngx_http_perl_cleanup_perl()
This commit is contained in:
parent
e8c5dc6ff4
commit
d1985e91f5
@ -62,7 +62,6 @@ static char *ngx_http_perl_require(ngx_conf_t *cf, ngx_command_t *cmd,
|
|||||||
void *conf);
|
void *conf);
|
||||||
static char *ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
|
static char *ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
|
||||||
static char *ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
|
static char *ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
|
||||||
static void ngx_http_perl_cleanup_sv(void *data);
|
|
||||||
|
|
||||||
#if (NGX_HAVE_PERL_MULTIPLICITY)
|
#if (NGX_HAVE_PERL_MULTIPLICITY)
|
||||||
static void ngx_http_perl_cleanup_perl(void *data);
|
static void ngx_http_perl_cleanup_perl(void *data);
|
||||||
@ -758,18 +757,6 @@ ngx_http_perl_cleanup_perl(void *data)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
ngx_http_perl_cleanup_sv(void *data)
|
|
||||||
{
|
|
||||||
ngx_http_perl_cleanup_t *cln = data;
|
|
||||||
|
|
||||||
dTHXa(cln->perl);
|
|
||||||
PERL_SET_CONTEXT(cln->perl);
|
|
||||||
|
|
||||||
SvREFCNT_dec(cln->sv);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static ngx_int_t
|
static ngx_int_t
|
||||||
ngx_http_perl_preconfiguration(ngx_conf_t *cf)
|
ngx_http_perl_preconfiguration(ngx_conf_t *cf)
|
||||||
{
|
{
|
||||||
@ -860,8 +847,6 @@ ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
ngx_http_perl_loc_conf_t *plcf = conf;
|
ngx_http_perl_loc_conf_t *plcf = conf;
|
||||||
|
|
||||||
ngx_str_t *value;
|
ngx_str_t *value;
|
||||||
ngx_pool_cleanup_t *cln;
|
|
||||||
ngx_http_perl_cleanup_t *pcln;
|
|
||||||
ngx_http_core_loc_conf_t *clcf;
|
ngx_http_core_loc_conf_t *clcf;
|
||||||
ngx_http_perl_main_conf_t *pmcf;
|
ngx_http_perl_main_conf_t *pmcf;
|
||||||
|
|
||||||
@ -881,11 +866,6 @@ ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cln = ngx_pool_cleanup_add(cf->pool, sizeof(ngx_http_perl_cleanup_t));
|
|
||||||
if (cln == NULL) {
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
plcf->handler = value[1];
|
plcf->handler = value[1];
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -907,11 +887,6 @@ ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cln->handler = ngx_http_perl_cleanup_sv;
|
|
||||||
pcln = cln->data;
|
|
||||||
pcln->sv = plcf->sub;
|
|
||||||
pcln->perl = pmcf->perl;
|
|
||||||
|
|
||||||
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
||||||
clcf->handler = ngx_http_perl_handler;
|
clcf->handler = ngx_http_perl_handler;
|
||||||
|
|
||||||
@ -924,9 +899,7 @@ ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
{
|
{
|
||||||
ngx_int_t index;
|
ngx_int_t index;
|
||||||
ngx_str_t *value;
|
ngx_str_t *value;
|
||||||
ngx_pool_cleanup_t *cln;
|
|
||||||
ngx_http_variable_t *v;
|
ngx_http_variable_t *v;
|
||||||
ngx_http_perl_cleanup_t *pcln;
|
|
||||||
ngx_http_perl_variable_t *pv;
|
ngx_http_perl_variable_t *pv;
|
||||||
ngx_http_perl_main_conf_t *pmcf;
|
ngx_http_perl_main_conf_t *pmcf;
|
||||||
|
|
||||||
@ -964,11 +937,6 @@ ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cln = ngx_pool_cleanup_add(cf->pool, sizeof(ngx_http_perl_cleanup_t));
|
|
||||||
if (cln == NULL) {
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
pv->handler = value[2];
|
pv->handler = value[2];
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -990,11 +958,6 @@ ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cln->handler = ngx_http_perl_cleanup_sv;
|
|
||||||
pcln = cln->data;
|
|
||||||
pcln->sv = pv->sub;
|
|
||||||
pcln->perl = pmcf->perl;
|
|
||||||
|
|
||||||
v->get_handler = ngx_http_perl_variable;
|
v->get_handler = ngx_http_perl_variable;
|
||||||
v->data = (uintptr_t) pv;
|
v->data = (uintptr_t) pv;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user