| OLD | NEW | 
| (Empty) |  | 
 |   1 #include <string.h> | 
 |   2  | 
 |   3 int __dns_parse(const unsigned char *r, int rlen, int (*callback)(void *, int, c
    onst void *, int, const void *), void *ctx) | 
 |   4 { | 
 |   5         int qdcount, ancount; | 
 |   6         const unsigned char *p; | 
 |   7         int len; | 
 |   8  | 
 |   9         if (rlen<12) return -1; | 
 |  10         if ((r[3]&15)) return 0; | 
 |  11         p = r+12; | 
 |  12         qdcount = r[4]*256 + r[5]; | 
 |  13         ancount = r[6]*256 + r[7]; | 
 |  14         if (qdcount+ancount > 64) return -1; | 
 |  15         while (qdcount--) { | 
 |  16                 while (p-r < rlen && *p-1U < 127) p++; | 
 |  17                 if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6) | 
 |  18                         return -1; | 
 |  19                 p += 5 + !!*p; | 
 |  20         } | 
 |  21         while (ancount--) { | 
 |  22                 while (p-r < rlen && *p-1U < 127) p++; | 
 |  23                 if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6) | 
 |  24                         return -1; | 
 |  25                 p += 1 + !!*p; | 
 |  26                 len = p[8]*256 + p[9]; | 
 |  27                 if (p+len > r+rlen) return -1; | 
 |  28                 if (callback(ctx, p[1], p+10, len, r) < 0) return -1; | 
 |  29                 p += 10 + len; | 
 |  30         } | 
 |  31         return 0; | 
 |  32 } | 
| OLD | NEW |