]> git.kaiwu.me - nginx.git/commitdiff
Fixed segmentation fault in ngx_resolver_create_name_query().
authorRuslan Ermilov <ru@nginx.com>
Thu, 26 Apr 2012 12:58:42 +0000 (12:58 +0000)
committerRuslan Ermilov <ru@nginx.com>
Thu, 26 Apr 2012 12:58:42 +0000 (12:58 +0000)
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

index 02c484da6941986dd5546b3ac27f40f31d115bf2..ecf97d7f76393ccf2f22cfbd92151688841a1bcc 100644 (file)
@@ -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;