summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorGary Lockyer <gary@catalyst.net.nz>2018-07-18 15:29:21 +1200
committerKarolin Seeger <kseeger@samba.org>2018-08-13 12:56:36 +0200
commita01a98182a5d4eaeddd7b127b8beb5028f7b08b2 (patch)
tree8aa77f978a6cf5298452e4ab037923b73a1b8ca2 /python
parent25e23c273c4c7c20cc297f04eaab8e9e8cad0bdb (diff)
downloadsamba-a01a98182a5d4eaeddd7b127b8beb5028f7b08b2.tar.gz
dns wildcards: tests to confirm BUG 13536
DNS wildcard matching failing if more than one label to the left of the wildcard. This commits adds tests to confirm the bug. Wildcard entry: *.example.org bar.example.com matches foo.bar.example.com does not, but it it should. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 0d3aec18679a2637430263a55de5e210a9201e21)
Diffstat (limited to 'python')
-rw-r--r--python/samba/tests/dns_wildcard.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/python/samba/tests/dns_wildcard.py b/python/samba/tests/dns_wildcard.py
index ca8426a6f14..01e06b8e262 100644
--- a/python/samba/tests/dns_wildcard.py
+++ b/python/samba/tests/dns_wildcard.py
@@ -172,6 +172,30 @@ class TestWildCardQueries(DNSTest):
self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
self.assertEquals(response.answers[0].rdata, WILDCARD_IP)
+ def test_one_a_query_match_wildcard_2_labels(self):
+ """ Query an A record, should match the wild card entry
+ have two labels to the left of the wild card target.
+ """
+
+ p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
+ questions = []
+
+ # Check the record
+ name = "label2.label1.wildcardtest.%s" % self.get_dns_domain()
+ q = self.make_name_question(name,
+ dns.DNS_QTYPE_A,
+ dns.DNS_QCLASS_IN)
+ questions.append(q)
+
+ self.finish_name_packet(p, questions)
+ (response, response_packet) =\
+ self.dns_transaction_udp(p, host=self.server_ip)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_OK)
+ self.assert_dns_opcode_equals(response, dns.DNS_OPCODE_QUERY)
+ self.assertEquals(response.ancount, 1)
+ self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
+ self.assertEquals(response.answers[0].rdata, WILDCARD_IP)
+
def test_one_a_query_wildcard_entry(self):
"Query the wildcard entry"
@@ -239,6 +263,30 @@ class TestWildCardQueries(DNSTest):
self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
self.assertEquals(response.answers[0].rdata, LEVEL2_WILDCARD_IP)
+ def test_one_a_query_match_wildcard_l2_2_labels(self):
+ """Query an A record, should match the level 2 wild card entry
+ have two labels to the left of the wild card target
+ """
+
+ p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
+ questions = []
+
+ # Check the record
+ name = "label1.label2.level2.wildcardtest.%s" % self.get_dns_domain()
+ q = self.make_name_question(name,
+ dns.DNS_QTYPE_A,
+ dns.DNS_QCLASS_IN)
+ questions.append(q)
+
+ self.finish_name_packet(p, questions)
+ (response, response_packet) =\
+ self.dns_transaction_udp(p, host=self.server_ip)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_OK)
+ self.assert_dns_opcode_equals(response, dns.DNS_OPCODE_QUERY)
+ self.assertEquals(response.ancount, 1)
+ self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
+ self.assertEquals(response.answers[0].rdata, LEVEL2_WILDCARD_IP)
+
def test_one_a_query_exact_match_l2(self):
"""Query an entry that matches the wild card but has an exact match as
well.