]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
improve e164 coverage
authorBob Halley <halley@dnspython.org>
Fri, 19 Jun 2020 16:56:28 +0000 (09:56 -0700)
committerBob Halley <halley@dnspython.org>
Fri, 19 Jun 2020 16:56:28 +0000 (09:56 -0700)
tests/test_name.py
tests/test_resolver.py

index 6856970deadface6ac9965dc61552e9575a71525..a7cb48318398db8b0bd964b803ff6dc174895780 100644 (file)
@@ -886,5 +886,10 @@ class NameTestCase(unittest.TestCase):
         text = dns.e164.to_e164(n)
         self.assertEqual(text, e)
 
+    def testBadEnumToE164(self):
+        n = dns.name.from_text('2.1.2.q.5.5.5.0.5.6.1.e164.arpa.')
+        self.assertRaises(dns.exception.SyntaxError,
+                          lambda: dns.e164.to_e164(n))
+
 if __name__ == '__main__':
     unittest.main()
index cf5118faf7ea9684d8de80d6762f9b7202a2523a..46024e30f5b4cfb6efc5e305005f52efe18390f2 100644 (file)
@@ -598,7 +598,11 @@ class NaptrNanoNameserver(Server):
         response.set_rcode(dns.rcode.REFUSED)
         response.flags |= dns.flags.RA
         try:
-            if message.question[0].rdtype == dns.rdatatype.NAPTR and \
+            zero_subdomain = dns.e164.from_e164('0')
+            if message.question[0].name.is_subdomain(zero_subdomain):
+                response.set_rcode(dns.rcode.NXDOMAIN)
+                response.flags |= dns.flags.AA
+            elif message.question[0].rdtype == dns.rdatatype.NAPTR and \
                message.question[0].rdclass == dns.rdataclass.IN:
                 rrs = dns.rrset.from_text(message.question[0].name, 300,
                                           'IN', 'NAPTR',
@@ -627,3 +631,6 @@ class NanoTests(unittest.TestCase):
             self.assertEqual(answer[0].service, b'')
             self.assertEqual(answer[0].regexp, b'')
             self.assertEqual(answer[0].replacement, dns.name.root)
+            def nxdomain():
+                answer = dns.e164.query('0123456789', ['e164.arpa'], res)
+            self.assertRaises(dns.resolver.NXDOMAIN, nxdomain)