]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Don't choke on invalid DNS payload when generating protobuf messages 16244/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 10 Oct 2025 14:40:25 +0000 (16:40 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 13 Oct 2025 07:19:35 +0000 (09:19 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
pdns/dnsdistdist/dnsdist-protobuf.cc

index 633e335a0fa693c161cef184992118eb8cb8e668..e02b6d875548abb1fd7dc50e3f722337908580b3 100644 (file)
@@ -195,8 +195,13 @@ void DNSDistProtoBufMessage::serialize(std::string& data) const
 
   if (d_dr != nullptr) {
     msg.setResponseCode(d_rcode ? *d_rcode : d_dr->getHeader()->rcode);
-    // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
-    msg.addRRsFromPacket(reinterpret_cast<const char*>(d_dr->getData().data()), d_dr->getData().size(), d_includeCNAME);
+    try {
+      // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
+      msg.addRRsFromPacket(reinterpret_cast<const char*>(d_dr->getData().data()), d_dr->getData().size(), d_includeCNAME);
+    }
+    catch (const std::exception& exp) {
+      vinfolog("Error while parsing the RRs from a response packet to add them to the protobuf message: %s", exp.what());
+    }
   }
   else {
     if (d_rcode) {