Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 4610:778d2cc03e22
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.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 26 Apr 2012 12:58:42 +0000 |
parents | 1bddc91e78d6 |
children | 3171ec7d0d05 |
comparison
equal
deleted
inserted
replaced
4609:22ab12943ed6 | 4610:778d2cc03e22 |
---|---|
1832 | 1832 |
1833 len = 0; | 1833 len = 0; |
1834 p--; | 1834 p--; |
1835 *p-- = '\0'; | 1835 *p-- = '\0'; |
1836 | 1836 |
1837 if (ctx->name.len == 0) { | |
1838 return NGX_DECLINED; | |
1839 } | |
1840 | |
1837 for (s = ctx->name.data + ctx->name.len - 1; s >= ctx->name.data; s--) { | 1841 for (s = ctx->name.data + ctx->name.len - 1; s >= ctx->name.data; s--) { |
1838 if (*s != '.') { | 1842 if (*s != '.') { |
1839 *p = *s; | 1843 *p = *s; |
1840 len++; | 1844 len++; |
1841 | 1845 |