verify parts.size(). Fixes #5688
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 14 Sep 2017 08:08:54 +0000 (10:08 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 14 Sep 2017 08:08:54 +0000 (10:08 +0200)
pdns/pdnsutil.cc

index 6123c9ca539c6a4f69a554d78c7765feb0729e44..c3213712d7b09a2531662e29b55bf8e1d9f8a3cc 100644 (file)
@@ -584,16 +584,16 @@ int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, const vect
       if (rr.qtype.getCode() == QType::SRV) {
         vector<string> parts;
         stringtok(parts, rr.getZoneRepresentation());
-        toCheck = DNSName(parts[3]);
+        if (parts.size() == 4) toCheck = DNSName(parts[3]);
       } else if (rr.qtype.getCode() == QType::MX) {
         vector<string> parts;
         stringtok(parts, rr.getZoneRepresentation());
-        toCheck = DNSName(parts[1]);
+        if (parts.size() == 2) toCheck = DNSName(parts[1]);
       } else {
         toCheck = DNSName(rr.content);
       }
 
-      if (!toCheck.isHostname()) {
+      if (!toCheck.empty() && !toCheck.isHostname()) {
         cout<<"[Warning] "<<rr.qtype.getName()<<" record in zone '"<<zone<<"' has non-hostname content '"<<toCheck<<"'."<<endl;
         numwarnings++;
       }