mirror of
https://github.com/nginx/nginx.git
synced 2025-06-12 13:42:55 +08:00
store name pointer in variable allocated on stack
as resolver ctx may be already deallocated at this point
This commit is contained in:
parent
fa748fe120
commit
9258872c2a
@ -578,6 +578,7 @@ failed:
|
|||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
|
ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
|
||||||
{
|
{
|
||||||
|
u_char *name;
|
||||||
ngx_resolver_t *r;
|
ngx_resolver_t *r;
|
||||||
ngx_resolver_node_t *rn;
|
ngx_resolver_node_t *rn;
|
||||||
|
|
||||||
@ -601,19 +602,21 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
|
|||||||
|
|
||||||
ngx_queue_insert_head(&r->addr_expire_queue, &rn->queue);
|
ngx_queue_insert_head(&r->addr_expire_queue, &rn->queue);
|
||||||
|
|
||||||
ctx->name.len = rn->nlen;
|
name = ngx_resolver_dup(r, rn->name, rn->nlen);
|
||||||
ctx->name.data = ngx_resolver_dup(r, rn->name, rn->nlen);
|
if (name == NULL) {
|
||||||
if (ctx->name.data == NULL) {
|
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx->name.len = rn->nlen;
|
||||||
|
ctx->name.data = name;
|
||||||
|
|
||||||
/* unlock addr mutex */
|
/* unlock addr mutex */
|
||||||
|
|
||||||
ctx->state = NGX_OK;
|
ctx->state = NGX_OK;
|
||||||
|
|
||||||
ctx->handler(ctx);
|
ctx->handler(ctx);
|
||||||
|
|
||||||
ngx_resolver_free(r, ctx->name.data);
|
ngx_resolver_free(r, name);
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user