]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
mydnsbackend: fix types pointing at root
authorKees Monshouwer <mind04@monshouwer.org>
Wed, 10 Dec 2014 17:11:37 +0000 (18:11 +0100)
committermind04 <mind04@monshouwer.org>
Wed, 10 Dec 2014 22:14:36 +0000 (23:14 +0100)
modules/mydnsbackend/mydnsbackend.cc

index bd9acaa72c48324edd8bf7f69b2c67dd3416dd04..f90b1979fcd533375960fcf2f40fc1d6ae9582e9 100644 (file)
@@ -303,35 +303,34 @@ bool MyDNSBackend::get(DNSResourceRecord &rr) {
                rr.qname=d_qname;
         } else {
                rr.qname=rrow[5];
-               if (rr.qname[rr.qname.length()-1] == '.') {
+               if (!rr.qname.empty() && rr.qname[rr.qname.length()-1] == '.') {
                        rr.qname.erase(rr.qname.length()-1); // Fully qualified, nuke the last .
                } else {
                        if (!rr.qname.empty())
                                rr.qname += ".";
                        rr.qname += d_origin; // Not fully qualified
                }
-
         }
 
-        if (rr.qtype.getCode() == QType::NS || rr.qtype.getCode()==QType::MX || 
-                rr.qtype.getCode() == QType::CNAME || rr.qtype.getCode() == QType::PTR) {
-               if (rr.content[rr.content.length()-1] == '.') {
-                       rr.content.erase(rr.content.length()-1); // Fully qualified, nuke the last .
+        if (rr.qtype.getCode() == QType::NS || rr.qtype.getCode()==QType::MX ||
+               rr.qtype.getCode() == QType::CNAME || rr.qtype.getCode() == QType::PTR) {
+               if (!rr.content.empty() && rr.content[rr.content.length()-1] == '.') {
+                       if (rr.content.length() > 1)
+                               rr.content.erase(rr.content.length()-1); // Fully qualified, nuke the last .
                } else {
-                       if (!rr.content.empty())
+                       if (rr.content != ".")
                                rr.content += ".";
                        rr.content += d_origin;
                }
         }
 
         if (rr.qtype.getCode() == QType::MX || rr.qtype.getCode() == QType::SRV)
-          rr.content=rrow[2]+" "+rr.content;
+               rr.content=rrow[2]+" "+rr.content;
         rr.ttl = atol(rrow[3].c_str());
         if (d_useminimalttl && rr.ttl < d_minimum)
                rr.ttl = d_minimum;
         rr.domain_id=atol(rrow[4].c_str());
 
-  
         rr.last_modified=0;
 
         return true;