]> granicus.if.org Git - pdns/commitdiff
make DNSPacketWriter::xfrLabel error out on empty labels in names
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 6 Dec 2012 14:23:34 +0000 (14:23 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 6 Dec 2012 14:23:34 +0000 (14:23 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2972 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dnswriter.cc

index ff5867a3afed56b2cb01374601f1d15408a1c2ce..d48e95e14ffb1457fc245029f2472ad49895c357 100644 (file)
@@ -250,7 +250,10 @@ void DNSPacketWriter::xfrLabel(const string& Label, bool compress)
       pos+=(part.size())+1;                     
     }
     else {
-      d_record.push_back((char)(i->second - i->first));
+      char labelsize=(char)(i->second - i->first);
+      if(!labelsize) // empty label in the middle of name
+        throw MOADNSException("DNSPacketWriter::xfrLabel() found empty label in the middle of name");
+      d_record.push_back(labelsize);
       unsigned int len=d_record.size();
       d_record.resize(len + i->second - i->first);
       memcpy(((&*d_record.begin()) + len), label.c_str() + i-> first, i->second - i->first);