From: Bob Halley Date: Fri, 10 Dec 2010 22:15:56 +0000 (-0800) Subject: disallow metaqueries in dns.resolver.query() X-Git-Tag: v1.9.3~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe47c7b430c12efa42040afd0a155e13fbe961a3;p=thirdparty%2Fdnspython.git disallow metaqueries in dns.resolver.query() --- diff --git a/ChangeLog b/ChangeLog index cfbd23b7..6a07424d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2010-12-10 Bob Halley + * dns/resolver.py (Resolver.query): disallow metaqueries. + * dns/rdata.py (Rdata.__hash__): Added a __hash__ method for rdata. 2010-11-23 Bob Halley diff --git a/dns/resolver.py b/dns/resolver.py index f803eb6d..30977f3a 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -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)