X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=dns.c;h=c5323e5e93c449af5ff38913dc8ec5c6a6a18687;hb=5bdbcd785b0a08e866631a6a062ea9ced1f6dce8;hp=3f6ecbe3988614105d402564acce04fe5acb08ee;hpb=cef603930a1b4ff932c9dcf1e5243c13279add14;p=project%2Fmdnsd.git diff --git a/dns.c b/dns.c index 3f6ecbe..c5323e5 100644 --- a/dns.c +++ b/dns.c @@ -299,6 +299,9 @@ parse_answer(struct interface *iface, uint8_t *buffer, int len, uint8_t **b, int return -1; } + if ((a->class & ~CLASS_FLUSH) != CLASS_IN) + return -1; + rdata = *b; if (a->rdlength > *rlen) { fprintf(stderr, "dropping: bad question\n"); @@ -309,7 +312,7 @@ parse_answer(struct interface *iface, uint8_t *buffer, int len, uint8_t **b, int *b += a->rdlength; if (cache) - cache_answer(iface, buffer, len, name, a, rdata); + cache_answer(iface, buffer, len, name, a, rdata, a->class & CLASS_FLUSH); return 0; }