aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-02-27 16:57:02 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-02-27 16:57:02 +0000
commit53d9677de451bae3d3da5c1ecbe6fa7b34fa5313 (patch)
tree2e8d51500fac5433f872107d533eaddbe5fe0ef6
parent5c95f885030d6d303415c72d920e635aa7bab822 (diff)
downloadnginx-53d9677de451bae3d3da5c1ecbe6fa7b34fa5313.tar.gz
nginx-53d9677de451bae3d3da5c1ecbe6fa7b34fa5313.zip
Fixed null pointer dereference in resolver (ticket #91).
The cycle->new_log.file may not be set before config parsing finished if there are no error_log directive defined at global level. Fix is to copy it after config parsing. Patch by Roman Arutyunyan.
-rw-r--r--src/core/ngx_resolver.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 5a0ade729..5c516175e 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -189,11 +189,6 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)
uc->sockaddr = u.addrs->sockaddr;
uc->socklen = u.addrs->socklen;
uc->server = u.addrs->name;
-
- uc->log = cf->cycle->new_log;
- uc->log.handler = ngx_resolver_log_error;
- uc->log.data = uc;
- uc->log.action = "resolving";
}
return r;
@@ -876,6 +871,12 @@ ngx_resolver_send_query(ngx_resolver_t *r, ngx_resolver_node_t *rn)
}
if (uc->connection == NULL) {
+
+ uc->log = *r->log;
+ uc->log.handler = ngx_resolver_log_error;
+ uc->log.data = uc;
+ uc->log.action = "resolving";
+
if (ngx_udp_connect(uc) != NGX_OK) {
return NGX_ERROR;
}