From 487ba70126ddcde8f889e20617b927c9d716c792 Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Thu, 26 Apr 2012 12:58:42 +0000 Subject: [PATCH] Fixed segmentation fault in ngx_resolver_create_name_query(). If name passed for resolution was { 0, NULL } (e.g. as a result of name server returning CNAME pointing to ".") pointer wrapped to (void *) -1 resulting in segmentation fault on an attempt to dereference it. Reported by Lanshun Zhou. --- src/core/ngx_resolver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c index 02c484da6..ecf97d7f7 100644 --- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -1834,6 +1834,10 @@ ngx_resolver_create_name_query(ngx_resolver_node_t *rn, ngx_resolver_ctx_t *ctx) p--; *p-- = '\0'; + if (ctx->name.len == 0) { + return NGX_DECLINED; + } + for (s = ctx->name.data + ctx->name.len - 1; s >= ctx->name.data; s--) { if (*s != '.') { *p = *s;