From: Kees Monshouwer Date: Wed, 10 Dec 2014 17:11:37 +0000 (+0100) Subject: mydnsbackend: fix types pointing at root X-Git-Tag: rec-3.7.0-rc1~109^2~14^2~10^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5cc7049819d1b799799ed6652766bfee99575f8;p=thirdparty%2Fpdns.git mydnsbackend: fix types pointing at root --- diff --git a/modules/mydnsbackend/mydnsbackend.cc b/modules/mydnsbackend/mydnsbackend.cc index bd9acaa72c..f90b1979fc 100644 --- a/modules/mydnsbackend/mydnsbackend.cc +++ b/modules/mydnsbackend/mydnsbackend.cc @@ -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;