mirror of
https://github.com/nginx/nginx.git
synced 2024-11-24 04:49:01 +08:00
return NXDOMAIN for ".." in host name
This commit is contained in:
parent
949aea4dfe
commit
09b199cf77
@ -369,6 +369,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx)
|
|||||||
{
|
{
|
||||||
uint32_t hash;
|
uint32_t hash;
|
||||||
in_addr_t addr, *addrs;
|
in_addr_t addr, *addrs;
|
||||||
|
ngx_int_t rc;
|
||||||
ngx_uint_t naddrs;
|
ngx_uint_t naddrs;
|
||||||
ngx_resolver_ctx_t *next;
|
ngx_resolver_ctx_t *next;
|
||||||
ngx_resolver_node_t *rn;
|
ngx_resolver_node_t *rn;
|
||||||
@ -485,10 +486,25 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx)
|
|||||||
ngx_rbtree_insert(&r->name_rbtree, &rn->node);
|
ngx_rbtree_insert(&r->name_rbtree, &rn->node);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_resolver_create_name_query(rn, ctx) != NGX_OK) {
|
rc = ngx_resolver_create_name_query(rn, ctx);
|
||||||
|
|
||||||
|
if (rc == NGX_ERROR) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rc == NGX_DECLINED) {
|
||||||
|
ngx_rbtree_delete(&r->name_rbtree, &rn->node);
|
||||||
|
|
||||||
|
ngx_resolver_free(r, rn->query);
|
||||||
|
ngx_resolver_free(r, rn->name);
|
||||||
|
ngx_resolver_free(r, rn);
|
||||||
|
|
||||||
|
ctx->state = NGX_RESOLVE_NXDOMAIN;
|
||||||
|
ctx->handler(ctx);
|
||||||
|
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (ngx_resolver_send_query(r, rn) != NGX_OK) {
|
if (ngx_resolver_send_query(r, rn) != NGX_OK) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@ -1696,6 +1712,10 @@ ngx_resolver_create_name_query(ngx_resolver_node_t *rn, ngx_resolver_ctx_t *ctx)
|
|||||||
len++;
|
len++;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
if (len == 0) {
|
||||||
|
return NGX_DECLINED;
|
||||||
|
}
|
||||||
|
|
||||||
*p = (u_char) len;
|
*p = (u_char) len;
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user