]> granicus.if.org Git - pdns/commitdiff
Don't reply to truncated queries
authorChristian Hofstaedtler <christian@hofstaedtler.name>
Mon, 12 Oct 2015 10:14:21 +0000 (12:14 +0200)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Tue, 27 Oct 2015 09:42:09 +0000 (10:42 +0100)
pdns/packethandler.cc

index e92eb0521c67d24dcf035a2143183d8d270ea81a..6d2383cfae8fa6ca48e418b25162d474a30a1301 100644 (file)
@@ -996,6 +996,14 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
     return 0;
   }
 
+  if(p->d.tc) { // truncated query. MOADNSParser would silently parse this packet in an incomplete way.
+    if(d_logDNSDetails)
+      L<<Logger::Error<<"Received truncated query packet from "<<p->getRemote()<<", dropping"<<endl;
+    S.inc("corrupt-packets");
+    S.ringAccount("remotes-corrupt", p->getRemote());
+    return 0;
+  }
+
   if (p->hasEDNS() && p->getEDNSVersion() > 0) {
     r = p->replyPacket();
     r->setRcode(16 & 0xF);