]> git.kaiwu.me - nginx.git/commitdiff
Merge of r4268:
authorIgor Sysoev <igor@sysoev.ru>
Mon, 14 Nov 2011 16:12:25 +0000 (16:12 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 14 Nov 2011 16:12:25 +0000 (16:12 +0000)
Fixed compression pointer processing in DNS response greater than 255 bytes.

Thanks to Ben Hawkes.

src/core/ngx_resolver.c

index ab7883011e82930c4b7ab9c60973e4fd272c38e0..32cd555b56338213fe98a408fd4b4a24f885e589 100644 (file)
@@ -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) {