aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2011-11-14 16:12:25 +0000
committerIgor Sysoev <igor@sysoev.ru>2011-11-14 16:12:25 +0000
commit13f1b5adee1af73e801facf68c229c6e045b0a23 (patch)
tree3290d2a206ce295ac70ffd54c312a1c2d2768952
parent7067707c4eb7e4350166c0b8d283a3b23f8337ba (diff)
downloadnginx-13f1b5adee1af73e801facf68c229c6e045b0a23.tar.gz
nginx-13f1b5adee1af73e801facf68c229c6e045b0a23.zip
Merge of r4268:
Fixed compression pointer processing in DNS response greater than 255 bytes. Thanks to Ben Hawkes.
-rw-r--r--src/core/ngx_resolver.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index ab7883011..32cd555b5 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -1922,7 +1922,13 @@ done:
n = *src++;
for ( ;; ) {
- if (n != 0xc0) {
+ if (n & 0xc0) {
+ n = ((n & 0x3f) << 8) + *src;
+ src = &buf[n];
+
+ n = *src++;
+
+ } else {
ngx_memcpy(dst, src, n);
dst += n;
src += n;
@@ -1932,12 +1938,6 @@ done:
if (n != 0) {
*dst++ = '.';
}
-
- } else {
- n = ((n & 0x3f) << 8) + *src;
- src = &buf[n];
-
- n = *src++;
}
if (n == 0) {