disallow metaqueries in dns.resolver.query()
authorBob Halley <halley@nominum.com>
Fri, 10 Dec 2010 22:15:56 +0000 (14:15 -0800)
committerBob Halley <halley@nominum.com>
Fri, 10 Dec 2010 22:15:56 +0000 (14:15 -0800)
ChangeLog
dns/resolver.py

index cfbd23b770e6758dfbda6e0c55a26a4557cb9a45..6a07424d40e2593b9dd87b66266f99bc05a32b2c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2010-12-10  Bob Halley  <halley@dnspython.org>
 
+       * dns/resolver.py (Resolver.query): disallow metaqueries.
+
        * dns/rdata.py (Rdata.__hash__): Added a __hash__ method for rdata.
 
 2010-11-23  Bob Halley  <halley@dnspython.org>
index f803eb6d2087ef7243ee1f28ff830ce8f2d45563..30977f3a8bbb98164be057ce1952d426620317ce 100644 (file)
@@ -61,6 +61,10 @@ class NoRootSOA(dns.exception.DNSException):
     This should never happen!"""
     pass
 
+class NoMetaqueries(dns.exception.DNSException):
+    """Metaqueries are not allowed."""
+    pass
+
 
 class Answer(object):
     """DNS stub resolver answer
@@ -571,8 +575,12 @@ class Resolver(object):
             qname = dns.name.from_text(qname, None)
         if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
+        if dns.rdatatype.is_metatype(rdtype):
+            raise NoMetaqueries
         if isinstance(rdclass, (str, unicode)):
             rdclass = dns.rdataclass.from_text(rdclass)
+        if dns.rdataclass.is_metaclass(rdclass):
+            raise NoMetaqueries
         qnames_to_try = []
         if qname.is_absolute():
             qnames_to_try.append(qname)