mirror of
https://github.com/nginx/nginx.git
synced 2025-06-11 04:12:40 +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_resolve_addr(ngx_resolver_ctx_t *ctx)
|
||||
{
|
||||
u_char *name;
|
||||
ngx_resolver_t *r;
|
||||
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);
|
||||
|
||||
ctx->name.len = rn->nlen;
|
||||
ctx->name.data = ngx_resolver_dup(r, rn->name, rn->nlen);
|
||||
if (ctx->name.data == NULL) {
|
||||
name = ngx_resolver_dup(r, rn->name, rn->nlen);
|
||||
if (name == NULL) {
|
||||
goto failed;
|
||||
}
|
||||
|
||||
ctx->name.len = rn->nlen;
|
||||
ctx->name.data = name;
|
||||
|
||||
/* unlock addr mutex */
|
||||
|
||||
ctx->state = NGX_OK;
|
||||
|
||||
ctx->handler(ctx);
|
||||
|
||||
ngx_resolver_free(r, ctx->name.data);
|
||||
ngx_resolver_free(r, name);
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user