]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
do not crash on EDNS0 queries containing data (was never in any released version...
authorBert Hubert <bert.hubert@netherlabs.nl>
Wed, 17 Sep 2008 17:04:36 +0000 (17:04 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Wed, 17 Sep 2008 17:04:36 +0000 (17:04 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1264 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dnsrecords.cc
pdns/pdns_recursor.cc

index 373eddbca22f76b760a141fa20caddebd1ad7b76..0588c0af27e6886676d3fa9bac88abe51442becb 100644 (file)
@@ -210,7 +210,6 @@ void OPTRecordContent::getData(vector<pair<uint16_t, string> >& options)
 
     string field(d_data.c_str() + pos, len);
     pos+=len;
-
     options.push_back(make_pair(code, field));
   }
 }
@@ -357,10 +356,10 @@ bool getEDNSOpts(const MOADNSParser& mdp, EDNSOpts* eo)
     eo->d_extRCode=stuff.extRCode;
     eo->d_version=stuff.version;
     eo->d_Z=stuff.Z;
-    
     OPTRecordContent* orc = 
       dynamic_cast<OPTRecordContent*>(mdp.d_answers.back().first.d_content.get());
-
+    if(!orc)
+      return false;
     orc->getData(eo->d_options);
 
     return true;
index 7bdd242c9ac3838cde6b3975c3695fafc69dc6dc..f50f59e0ab59bde8a0a246a0673e392250777c16 100644 (file)
@@ -1504,6 +1504,7 @@ void parseAuthAndForwards()
   SyncRes::s_domainmap.clear(); // this makes us idempotent
 
   TXTRecordContent::report();
+  OPTRecordContent::report();
 
   typedef vector<string> parts_t;
   parts_t parts;