]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
If we get a CNAME when asking for a DS, we should give up and return vState::BogusUna...
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 28 Jan 2022 13:26:36 +0000 (14:26 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 28 Jan 2022 13:36:18 +0000 (14:36 +0100)
pdns/syncres.cc

index 4daa7440bd5e460caaddf6315e5ce6c3bf165a10..3358831a445f014d021db2e6da0aa21c6bbe9d22 100644 (file)
@@ -2904,12 +2904,18 @@ vState SyncRes::validateRecordsWithSigs(unsigned int depth, const DNSName& qname
         state = vState::BogusSelfSignedDS;
         dsFailed = true;
       }
-      else if (qtype == QType::DS && signer == qname && !signer.isRoot() && (type == QType::SOA || type == QType::NSEC || type == QType::NSEC3)) {
+      else if (qtype == QType::DS && signer == qname && !signer.isRoot()) {
+        if (type == QType::SOA || type == QType::NSEC || type == QType::NSEC3) {
         /* if we are trying to validate the DS or more likely NSEC(3)s proving that it does not exist, we have a problem.
            In that case let's go Bogus (we will check later if we missed a cut)
         */
-        state = vState::BogusSelfSignedDS;
-        dsFailed = true;
+          state = vState::BogusSelfSignedDS;
+          dsFailed = true;
+        }
+        else if (type == QType::CNAME) {
+          state = vState::BogusUnableToGetDSs;
+          dsFailed = true;
+        }
       }
       else if (qtype == QType::DNSKEY && signer == qname) {
         /* that actually does happen when a server returns NS records in authority