]> granicus.if.org Git - pdns/commitdiff
with this change, DNSName can make a lowercase copy of itself, and we make dnssecsign...
authorbert hubert <bert.hubert@netherlabs.nl>
Wed, 17 Aug 2016 09:10:16 +0000 (11:10 +0200)
committerbert hubert <bert.hubert@netherlabs.nl>
Wed, 17 Aug 2016 09:10:16 +0000 (11:10 +0200)
Includes a test

pdns/dnsname.hh
pdns/dnssecsigner.cc
pdns/test-dnsname_cc.cc

index c7abadb111e4126c22d259162dce9f811e313377..a35a1997f922d9ea38b3cde5447f01641318168a 100644 (file)
@@ -63,6 +63,15 @@ public:
   std::vector<std::string> getRawLabels() const; //!< Individual raw unescaped labels
   bool chopOff();                               //!< Turn www.powerdns.com. into powerdns.com., returns false for .
   DNSName makeRelative(const DNSName& zone) const;
+  DNSName makeLowerCase() const
+  {
+    DNSName ret;
+    ret.d_storage = d_storage;
+    for(auto & c : ret.d_storage) {
+      c=dns2_tolower(c);
+    }
+    return ret;
+  }
   void makeUsRelative(const DNSName& zone);
   DNSName labelReverse() const;
   bool isWildcard() const;
index e315bbe98d27dca85da55dbadd68704512a668af..f6e65269e319627ab95d07f3ff83c2ce88b0e43a 100644 (file)
@@ -192,7 +192,8 @@ void addRRSigs(DNSSECKeeper& dk, UeberBackend& db, const set<DNSName>& authSet,
   vector<shared_ptr<DNSRecordContent> > toSign;
 
   vector<DNSResourceRecord> signedRecords;
-  
+  signedRecords.reserve(rrs.size()*1.5);
+  //  cout<<rrs.size()<<", "<<sizeof(DNSResourceRecord)<<endl;
   DNSName signer;
   for(vector<DNSResourceRecord>::const_iterator pos = rrs.begin(); pos != rrs.end(); ++pos) {
     if(pos != rrs.begin() && (signQType != pos->qtype.getCode()  || signQName != pos->qname)) {
@@ -200,9 +201,9 @@ void addRRSigs(DNSSECKeeper& dk, UeberBackend& db, const set<DNSName>& authSet,
         addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords, origTTL);
     }
     signedRecords.push_back(*pos);
-    signQName= DNSName(toLower(pos->qname.toString()));
+    signQName= pos->qname.makeLowerCase();
     if(!pos->wildcardname.empty())
-      wildcardQName = DNSName(toLower(pos->wildcardname.toString()));
+      wildcardQName = pos->wildcardname.makeLowerCase();
     else
       wildcardQName.clear();
     signQType = pos ->qtype.getCode();
index b2e247a2aa2733adf55477b86eed35da21b6bba3..11997bf56a5616656ed90173b8a9fcc81533b616 100644 (file)
@@ -448,6 +448,18 @@ BOOST_AUTO_TEST_CASE(test_compare_empty) {
   BOOST_CHECK(!a.canonCompare(b));
 }
 
+BOOST_AUTO_TEST_CASE(test_casing) {
+  DNSName a("WwW.PoWeRdNS.Com"), b("www.powerdns.com.");
+  BOOST_CHECK_EQUAL(a,b);
+  BOOST_CHECK_EQUAL(a.toString(), "WwW.PoWeRdNS.Com.");
+  DNSName c=a.makeLowerCase();
+  BOOST_CHECK_EQUAL(a,c);
+  BOOST_CHECK_EQUAL(b,c);
+  BOOST_CHECK_EQUAL(c.toString(), b.toString());
+  BOOST_CHECK_EQUAL(c.toString(), "www.powerdns.com.");
+}
+
+
 
 BOOST_AUTO_TEST_CASE(test_compare_canonical) {
   DNSName lower("bert.com."), higher("alpha.nl.");